1

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

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

但是当我使用命令 php 从终端启动脚本时,出现错误:Warning fopen [...] failed to open stream: Permission denied

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

谢谢你的帮助。

4

2 回答 2

1

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

如果这不起作用,你总是可以尝试sudo在你的命令前面加上一个空格,就像这样:

$ sudo php whatever here

然后将提示您输入用户密码。

于 2012-09-04T06:59:34.793 回答
1

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

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


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

于 2012-09-04T07:01:00.320 回答