在MAC终端中执行的PHP脚本:无法打开流:权限被拒绝

时间:2012-09-04 06:56:32

标签: php fopen

我有问题。 我有一个PHP脚本执行一些操作,然后创建一个.txt来将一些日志放入其中。

当我使用浏览器运行脚本时,它运行正常,创建了txt文件(每次使用脚本时都会创建一个新文件),将日志写入其中..

BUT 当我使用命令php从终端启动脚本时,我有错误: 警告fopen [...]无法打开流:权限被拒绝

我保存日志的文件夹的权限是755.该文件夹位于/ Library / WebServer / Documents /中 _www是该文件夹的所有者。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

检查每个人都可以访问目录/文件夹,并且创建该目录/文件夹权限的默认文件使整个系统可以公开访问该文件,而不仅仅是单个用户。这有时会把它搞砸。

如果这不起作用,你总是可以尝试将sudo放在你的命令前面,然后是一个空格,如下所示:

$ sudo php whatever here

然后系统会提示您输入用户密码。

答案 1 :(得分:1)

因此,当您在浏览器中运行脚本时,_www用户正在执行该脚本,该用户是(通常)由您的Web服务器apache使用的隐藏用户。

然后当您自己运行脚本时,它由您的用户帐户运行,该帐户不拥有日志所在的目录,因此您无法写入该脚本。你可以通过以管理员身份运行脚本来解决这个问题(sudo php script.php)。


或者,您可以对用户和群组执行某些操作,以使其适用于您的用户帐户和_www帐户。也许您可以将自己和_www用户添加到组中,然后将该组设置为该目录的所有者。我对这部分不太自信,但是如果你想要一个比每次使用sudo更强大的解决方案,它应该让你朝着正确的方向前进。