我在ubuntu下部署lamp环境,出现了php无法创建目录和写入文件的情况,项目的权限都已经赋值为777了,apache还是报了错误信息:
PHP Warning: file_put_contents(/var/www/wechataccess/log/user.log): failed to open stream: Permission denied in /var/www/wechataccess/includes/Util.class.php on line 74
求解
PHP代码如下:
$max_size = 10000; $log_filename = LOG_DIR . 'user.log'; if (!is_dir(LOG_DIR)) { mkdir(LOG_DIR, 0777, true); } //如果日志文件大小超过限制则移除文件 if (file_exists($log_filename) && (filesize($log_filename) > $max_size)){ unlink($log_filename); } file_put_contents($log_filename, date('Y-m-d H:i:s')." $str\r\n", FILE_APPEND);
就是权限的问题。提示很清楚了。
看一看你写的那个文件夹的权限。实在不行加上 -r 在试一下
我对整个项目下的文件都赋权限了的,chmod 0777 *.*
@heron: 试一下
sudo chmod -R 777
@宁静致远_: 好吧,确实是这样的,看来对linux权限还是不熟。谢谢了
都知道是权限的问题,但是我要说的是root和你的系统用户问题。Ubuntu登录的用户名并非root,那么如果你每次增加文件都要sudo chmod一下并不是一个有效的好办法。相信我,chown也并不能解决问题,因为lnmp(lamp)默认的wwwroot用户和组都是www:www,你将www:www用户修改为chown user:user -R wwwroot后打开网页会发现,权限问题席卷而来。那么最有效的办法是什么呢?
setfacl -R -m u:username:rwx wwwroot
此时,username用户也拥有了wwwroot目录的rwx操作权限,并且丝毫没有干涉lnmp(lamp)默认的用户和组权限。
个人拙见,不喜勿喷。
还是多谢你的回复,我对ubuntu的东西还不是很熟,所以对你说的不是很懂,以后遇到了再来看吧
你这个不也是每次都要运行吗