PHP无法用mkdir目录(PHP unable to create a directory wit

2019-07-05 12:51发布

我以前的工作的PHP脚本,它能够创建一个目录与mkdir

$webfolder = "/var/www/html/images/user";
mkdir($webfolder, 0770);

我做了一些修改该文件夹的权限设置/var/www/html/images现在是:

drwxrwx---. myself apache system_u:object_r:httpd_sys_content_t:s0 images

我觉得以前在此文件夹中所拥有apache 。 但是,由于apache已经阅读的完全权限,写和执行的用户群,我不知道为什么它不能创建中的文件夹。 使用mkdir产生false布尔值。

该问题是由于目录的所有权还是有其他原因? 请注意,我使用的PHP版本5.4。

错误日志中说:

[周一12月17日11时12分三十四秒2012] [错误] [客户端127.0.0.1] PHP警告:MKDIR():权限在/ var / www / html等/上传拒绝了对线33,引用者: https://开头mywebsite。 COM /引荐

Answer 1:

答案是盯着就在我的面前,但是我把它错过由于我不熟悉的SELinux。

SELinux上下文类型应被设置为httpd_sys_content_rw_t代替httpd_sys_content_t使得文件夹是可读写的Apache。 更改背景递归用下面的命令来完成:

# chcon -R -t httpd_sys_content_rw_t /var/www/html/images

好伤心。 希望它可以帮助别人谁遇到这一点。



Answer 2:

在CentOS7 VM,与PHP5.4.16 /阿帕奇2.4.6 / MariaDB的44年5月5日,Smarty模板目录无法写入生成编译模板文件,并给下面的错误(在/ var /日志/的httpd / error_log中):

[Thu Mar 31 12:36:08.201383 2016] [:error] [pid 13094] [client 192.168.212.65:52204] PHP Fatal error:  Smarty error: unable to write to $compile_dir '/var/www/html/app1/templates_c'. Be sure $compile_dir is writable by the web server user. in /var/www/html/app1/libs/smarty/Smarty.class.php on line 1093

因此PHP申请被显示空白屏幕。

搭配chmod 777 templates_c没有工作,要么; 但按照由@Question溢出的建议,在这个虚拟机上的网络root权限解决了问题。

我不得不执行:

[root@appserver html]# chcon -R -t httpd_sys_content_rw_t /var/www/html

当然,templates_c和缓存应该由Apache用户所拥有:

drwxr-xr-x.  2 apache apache     6 Mar 31 12:56 templates_c
drwxr-xr-x.  2 apache apache     6 Mar 31 12:56 cache

花费超过半天后,遇到了这个。 谢谢



文章来源: PHP unable to create a directory with mkdir