为了在文档根目录中创建文件,您的 PHP 进程必须具有写入目录的权限。通常(但不总是)PHP 以与 Web 服务器相同的用户身份运行。此用户的名称会因不同的系统而异。在 Ubuntu 和 Debian 上,用户被称为www-data
,在其他系统上它可能只是www
、 或apache
、 或apache2
。在某些系统上,它可能是root
.
您可以通过检查服务器 superglobal: 的值来找出您的 PHP 以哪个用户身份运行 $_SERVER['USER']
。 phpinfo()
提供了一种查看此类内容的简单方法。通常,PHP 用户与 Web 服务器用户相同(但并非总是如此)。
设置目录所有权和权限完全是另一个主题 - 取决于您使用的操作系统,您对服务器的访问和权限以及许多其他内容。如果您需要这方面的指导,您可以从 serverfault.com 开始。
祝你好运。
[编辑] 好的,如果您正在运行 as apache
,并且您正在尝试在/var/www/blah/mydomain.com/htdocs/
... 中创建新目录,那么当您运行时:
> ls -splad /var/www/blah/mydomain.com/htdocs
你会期望看到类似的东西:
4 drwxr-xr-x 2 apache apache 4096 2010-07-22 20:54 /var/www/blah/mydomain.com/htdocs/
有两个有趣的部分:
drwxr-xr-x
意思是: d
=目录;rwx
= 用户有读、写、执行;r-x
= 组只有读取和执行;r-x
= 每个人都只有 Read 和 eXecute。
-apache apache
第一个是拥有文件/目录的用户的名称,第二个是拥有文件/目录的组的名称。
所以如果你看到这样的东西:
4 drwxr-xr-x 2 root apache 4096 2010-07-22 20:54 /var/www/blah/mydomain.com/htdocs/
它不起作用,因为该目录归root
(而不是 apache)所有,即使它是由 分组的apache
,该目录也不是组可写的,因此不会削减它。在这种情况下,您可以简单地添加组写入权限 ( chmod g+w /var/www/blah/mydomain.com/htdocs
),然后就可以开始了。
您可能会看到的其他内容是:
4 drw-r-xr-x 2 apache apache 4096 2010-07-22 20:54 /var/www/blah/mydomain.com/htdocs/
在这种情况下,所有权是可以的,但该目录的所有者不可写。您可以通过为 owner 添加写入权限来解决此问题chmod u+w /var/www/blah/mydomain.com/htdocs
。
还有很多其他的变化,但也许这会有所帮助。