6

我的服务器上的所有文件都有 777。PHP 5.4(无安全模式)

站点在其他服务器上工作。这是 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                 }

在chownls -l之后,无济于事

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
4

4 回答 4

4

确保:

  • web 目录归 apache 用户所有。(“ls -al”会告诉你)
  • 您要在其中创建的父目录也归该用户所有。
  • 父目录不是您没有写入权限的挂载
  • 您要创建的路径是正确的(var_dump($dstDir) 会告诉您)
  • $this->newDirMode 包含正确的权限值。(如果您在 Windows 上运行,这将被忽略)

如果没有问题并且仍然无法正常工作,我会这样做:

  • 让自己成为 apache 用户并尝试手动创建它(“sudo -u apache”,如果您的用户名是 apache)
  • 尝试省略 "mkdir($dstDir,$this->newDirMode,true);" 中的第三个参数 'true' 并依次创建所有目录
  • 检查日志(“/var/log/apache”是你的朋友)

希望这可以帮助。

于 2013-07-03T14:24:08.233 回答
3

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

setenforce 0
于 2014-03-11T23:19:20.473 回答
1

检查 SELinux 并关闭它。现在它可以工作了!

于 2013-07-03T16:38:57.657 回答
1

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

于 2014-12-03T05:03:13.297 回答