当前位置:  开发笔记 > 编程语言 > 正文

PHP mkdir()和fopen()不起作用 - 权限问题?umask问题?

如何解决《PHPmkdir()和fopen()不起作用-权限问题?umask问题?》经验,为你挑选了1个好方法。

以下PHP脚本无法创建目录.它也将无法创建文件(当目录已存在时).

ini_set('error_reporting', E_ALL);

define('ABSPATH', $_SERVER['DOCUMENT_ROOT']);
echo ABSPATH . '

'; $dir_to_make = ABSPATH . '/aaatest'; $file_to_make = ABSPATH . '/aaatest/aaatest.txt'; echo umask() . '
'; mkdir($dir_to_make) or die('could not create directory'); fopen($file_to_make) or die('could not open/create file');

umask()返回值18.文档根目录中有一个句点(/var/www/blah/websitename.com/httpdocs).

我不完全理解umask(),也不确定如何正确使用它.我不知道这是不是问题,但似乎确实存在问题.我应该更改umask,创建文件/目录,然后将其更改回来吗?umask应该改变/制作/编辑文件/目录是什么?服务器应该配置不同吗?



1> Lee..:

要在文档根目录中创建文件,您的PHP进程必须具有写入目录的权限.通常(但不总是)PHP以与Web服务器运行的用户相同的方式运行.该用户的名称因系统而异.在Ubuntu和Debian上,用户被调用www-data,在其他系统上它可能只是www,或apache,或apache2.在某些系统上,它可能是root.

您可以通过检查服务器超全局的值来找出PHP运行的用户: $_SERVER['USER']. phpinfo()提供一个简单的方法来看看这样的东西.通常,PHP用户与Web服务器用户相同(但并非总是如此).

设置目录所有权和权限完全是另一个主题 - 取决于您所使用的操作系统,您对服务器的访问权限以及许多其他内容.如果您需要这方面的指针,可以从serverfault.com开始.

祝好运.


[编辑]好吧,如果你正在运行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=用户有Read,Write,eXecute; r-x= group只有Read和eXecute; r-x=每个人都只有阅读和执行.

apache apache-第一个是拥有该文件/目录的用户的名称,所述第二个是拥有该文件/目录的组的名称.

所以,如果你看到这样的东西:

4 drwxr-xr-x 2 root apache 4096 2010-07-22 20:54 /var/www/blah/mydomain.com/htdocs/

它会不会起作用,因为该目录是由所有的root(而不是Apache),即使它是由分组apache,该目录是不是组可写,这样不剪.在这种情况下,你可以简单地添加group write perms(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/

在这种情况下,所有权是可以的,但该目录不能由其所有者写入.您可以通过为所有者添加写入权限来解决此问题chmod u+w /var/www/blah/mydomain.com/htdocs.

还有很多其他的变化,但也许这会有所帮助.

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有