看来我不能创build文件。 当我将权限设置为777在文件夹上,我试图创build一个文件夹,然后脚本工作正常。 如果文件夹设置为755,则失败。 我对linux不是很了解,但是我想把这些东西搞清楚。 我花了几个小时尝试的东西。 有没有人知道如何使它具有足够高的权限。
我知道这是一个权限和Apache的问题,我只是不知道如何解决这个问题。 我编辑了httpd.conf文件,但我真的不知道我在做什么…任何帮助? (我保存了备份。)
请停止建议使用777.你正在让你的文件被所有人写入,这几乎意味着你失去了权限系统设计的所有安全性。 如果您提出这个建议,请考虑一下它可能对配置不当的网络服务器造成的后果:通过覆盖文件来“破解”网站会变得非常容易。 所以,不要。
Michael:为什么脚本无法创建目录是一个完全可行的原因,运行PHP的用户(可能与Apache不同)没有足够的权限来执行此操作。 我认为你应该解决潜在的问题,而不是改变权限,这意味着你的文件拥有错误的所有者,或者Apache或PHP在错误的用户下运行。
现在,似乎你已经安装了你自己的服务器。 您可以通过运行一个简单的脚本来确定哪个用户正在运行PHP,这个脚本调用了大多数Linux中安装的“whoami”程序:
<?php echo `whoami`;
如果一切正常,你应该看到PHP正在运行的用户名。 根据您的操作系统,这可能是'万维网数据','没有人','http',或任何变化。 如果您的网站是唯一运行的网站,则通过更改Apache运行的用户很容易进行更改。 如果您有Debian,就像我倾向于的那样,您可以编辑/ etc / apache2 / envvars文件(以root身份),并更改APACHE_RUN_USER的值。 根据您的操作系统,这个变量可能被设置在一个不同的配置文件中,所以如果在/ etc / apache2 / envvars中找不到它,尝试使用以下命令来搜索变量声明:
$ grep -R "APACHE_RUN_USER=" .
从所有的Apache配置文件所在的目录。
如果您不是服务器上的唯一一个,那么您可能需要考虑为每个网站创建用户帐户,并使用诸如Apache2-MPM-ITK之类的方法来更改RUN_USER,具体取决于调用哪个网站。 另外,确保PHP进程正在运行的用户是文件的所有者和目录。 你可以通过使用chown来完成:
% chown theuser:theuser -R /var/www/website/
如果PHP使用自己的用户运行,并且是需要写入的文件和目录的所有者,则权限700就足够了。 我倾向于对大多数文件使用750,因为我通常在该组中有多个用户,并且他们可以具有读取权限。 所以,你可以改变权限:
% chmod 0750 -R /var/www/website/
应该是这样的。 如果您有任何问题,请告诉我们, 请不要采取任何基本上告诉您的建议:如果安全困扰您,请将安全措施移除。
我有一个类似的问题,但在我的情况下,我有SELinux运行,它甚至失败,即使有0777权限。 原来我需要明确地允许httpd使用以下命令对目录进行写访问:
chcon -R -t httpd_sys_rw_content_t <PARENT_OF_MKDIR_TARGET>
SELinux疑难解答可能有更多的细节。
在Ubuntu上,你可以像Berry所说的那样编辑/ etc / apache2 / envvars。
当您更改Apache用户时,请注意意想不到的后果。 其中之一就是可以存储在/ var / lib / php5中的PHP会话。 您可能还需要更改该文件夹的所有权。
php用户(www-data,php,apache,无论它是什么)需要对755 dir有写权限。 我假设它不是该文件夹的创建者组的成员,否则它将能够写入它。 将php用户添加到组中或者将文件夹上的权限更改为777.如果这两个选项都不是,则可以使用PECL SSH2扩展名登录组中的用户(或文件的所有者)并改为创建文件。