创建文件夹: 权限被拒绝。

6

我的服务器上所有文件都有777权限。PHP版本为5.4(未启用safe_mode)。

在其他服务器上可以正常运行该网站,它使用的是Yii框架。

 mkdir(): Permission denied

/var/www/html/project/framework/web/CAssetManager.php(225)

213             return $this->_published[$path];
214         elseif(($src=realpath($path))!==false)
215         {
216             $dir=$this->generatePath($src,$hashByName);
217             $dstDir=$this->getBasePath().DIRECTORY_SEPARATOR.$dir;
218             if(is_file($src))
219             {
220                 $fileName=basename($src);
221                 $dstFile=$dstDir.DIRECTORY_SEPARATOR.$fileName;
222 
223                 if(!is_dir($dstDir))
224                 {
225                     mkdir($dstDir,$this->newDirMode,true);
226                     chmod($dstDir,$this->newDirMode);
227                 }

以下是更易懂的翻译内容:ls -l命令使用chown后无效。

drwsrwsrwx.  2 apache apache    4096 июля   3 16:44 assets
drwxrwxrwx.  5 apache apache    4096 июня  10 14:52 bootstrap
drwxrwxrwx. 19 apache apache    4096 июля   3 16:04 framework
-rwxrwxrwx.  1 apache apache     326 июля   3 16:42 index.php
drwxrwxrwx. 10 apache apache    4096 июля   3 16:04 protected
drwxrwxrwx.  3 apache apache    4096 июня  20 13:28 soap
drwxrwxrwx.  3 apache apache    4096 июля   3 16:04 themes

2
你需要在你试图创建目录的目录上设置777权限,或者更改它的所有者。 - eric.itzhak
1
你还应该使用八进制表示文件和目录权限。使用0777代替777 - Cobra_Fast
添加一些信息...这并没有帮助... - awMinor
@user2546911:在你的父目录上执行ls -la命令,并把输出结果贴在这里,就像@ChrisHanson告诉你的那样。 - Amal Murali
所有父级目录都有Apache所有者。 - awMinor
显示剩余4条评论
4个回答

4
确保以下事项:
  • Web目录的拥有者是Apache用户。(使用“ls -al”命令可以查看)
  • 您想要创建的父级目录也是该用户拥有的。
  • 父级目录不是您没有写入权限的挂载点。
  • 您想要创建的路径是正确的(var_dump($dstDir)可以告诉您)。
  • $this->newDirMode包含正确的权限值。(如果您正在运行Windows,则会忽略此内容)

如果没有问题,但仍然无法正常工作,请尝试:

  • 让自己成为Apache用户并手动创建它(如果您的用户名是Apache,则需要使用“sudo -u apache”命令)。
  • 尝试省略“mkdir($dstDir,$this->newDirMode,true);”中的第三个参数“true”,并逐个创建所有目录。
  • 检查日志("/var/log/apache"对您很有帮助)。

希望这些内容能帮到您。


在你的 /etc/apache2/apache2.conf 文件中,定义了哪个用户?(搜索 'User' 后面跟着 'Group') - cb0
我认为,SELinux..其他领域是在/var/www/html/工作的,但我在SELinux中没有任何信息。 - awMinor
你的 'ls -la' 命令显示这应该没问题 :( 手动创建目录可以吗? - cb0

3

SELinux可能是问题所在。尝试手动关闭它:

setenforce 0

1

SELinux是我设置的罪魁祸首。感谢提醒!


权限和所有权也是一个问题。我的解决方案是:chown -R apache basic/ - pawr
chgrp -R apache basic/ - pawr
将chmod 755权限递归地应用于您的Web根目录,然后按照“setenforce 0”和始终有用的“service httpd restart”进行操作,以确保其正常工作。感谢大家对此问题的帮助。期待着使用Yii 2.0进行开发。 - pawr

1
检查SELinux并关闭它...现在它可以正常工作!

1
这并没有提供问题的答案。如果要批评或请求作者澄清,请在他们的帖子下留言 - 您始终可以在自己的帖子上发表评论,并且一旦您拥有足够的声望,您将能够评论任何帖子 - Steven V
1
请使用问题上的编辑链接添加其他信息。“发布答案”按钮仅用于对问题的完整回答。 - Brant Olsen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接