命令行与WEB的写入权限

专业的主机商(比如:dreamhost)给予用户的shell帐号和FTP帐号、执行PHP的帐号是相同的,不会有权限问题。

但有时候用户自己配的服务器环境是这样的:

WEB服务器(以apache为例)的运行帐号假设是www(以PHP模块执行时以apache的执行帐号为准,CGI、FastCGI方式执行PHP时,以php的执行帐号为准),shell的帐号是root或其他个人帐号,这样在执行操作后就可能出现文件写入权限问题。

比如:你在后台以root执行了php /var/www/xxxx/akcms/tools/xxxx.php命令,在执行过程中程序可能会写一些日志、生成一些缓存等,这些文件都是root创建的,所有者都是root(依赖于设置等)。这时候再回到WEB端,通过网页访问AKCMS程序就可能会提示“某某文件写入不了”,在不同的服务器环境下,还可能虽然不报错,但是会出现内容不更新等莫名其妙的问题。这是因为apache等的运行帐号www并没有root的文件的写入权限导致的。

命令行这么危险,那谁还敢用呢?其实只要合理配置,是不会出现问题的。

办法一:以帐号执行命令行程序,这是最省事、也最安全的办法,就像Dreamhost

办法二:人工设置文件权限,参见《解决写入权限问题