2013-02-19 56 views
0

test.php打开test.txt并写入它。它在一个托管服务器上正常工作。如何编写文本文件

将代码迁移到另一个主机后,test.php现在不能写出test.txt。错误显示:

Warning: fopen(/home/username/public_html/test.txt) 
[function.fopen]: failed to open stream: Permission denied 

我缺少什么赋予权限时test.txt文件设置为777在原装主机,test.txt的设置它只会工作到755

为test.php写入这个新的主机上没有777的文件?

此外,文件上传PHP脚本也无法正常工作。

+2

尝试对整个文件夹给予授权 – user2051349 2013-02-19 22:36:57

+0

测试文件位于public_html文件夹中,该文件夹设置为750.我应该如何设置它?为什么不只是文件? – detailCode 2013-02-19 22:39:08

+1

在前一台主机上,php运行时拥有文件所有者权限,并且以有限权限(比如'www','apache'或'nobody')作为用户运行,并且不能更改其他用户文件。 – 2013-02-19 22:39:13

回答

1

这不仅仅是重要的许可,还包括谁拥有这些文件。如果文件夹/文件属于用于运行Web服务器的同一用户,则755就足够了。

直接写入public_html目录是一个巨大的安全风险。我建议创建一个子目录(可能是public_html以外的最佳文件夹),并给它适当的权限/所有权。

让运行apache的用户所拥有的文件夹比较安全 - 或者通常是类似apache或www的数据,而不是授予世界写入权限。

+0

我会将其移动。这个用户访问的东西,可以在.htaccess或php.ini中设置吗? – detailCode 2013-02-19 22:43:29

+1

不,其* nix所有权/权限 - 您需要使用chown(用于更改所有者)和chmod(用于权限)在命令行/ ftp上执行的操作。如果您无法更改所有者,则将权限设置为宽容可能是我们唯一的选择,但将其限制为独立文件夹可最大限度地降低您的风险。 – 2013-02-19 22:46:02