文件写入无法从终端工作,但从浏览器工作


file write not working from terminal but works from browser

我有一个php脚本,其中包含一些文本文件写入操作。现在,如果我从浏览器执行脚本,通过使用它的 url 访问它,它可以正常工作并且文件编写完美。但是当我使用命令从终端运行相同的脚本时,脚本运行但不执行文件操作。我不确定为什么会这样。我知道这可能是一件愚蠢的事情,或者我错过了一些钥匙或任何东西,但到目前为止无法弄清楚。

这是我正在使用的命令

/path/to/php -f /path/to/file

这是写入文本文件的代码:

$myFile = "filename.txt";
$fh = fopen($myFile, 'a+') or die("can't open file");
$str = "file content here";
fwrite($fh, $str);
fclose($fh);

感谢您的帮助。

这可能使用不同的路径。例如,当从终端运行时,它将在运行命令时所在的目录中查找"文件名.txt",而从浏览器运行时,它将查找与PHP文件相同的目录。

要解决此问题,请使用完整路径,而不仅仅是您正在访问的文件的文件名。

这可能是权限问题。从浏览器运行脚本时,将使用 Web 服务器的凭据执行脚本。

为文件/目录设置正确的权限,或以 Web 服务器的用户身份运行脚本。

检查路径,使用/var/www/example.com/filename.ext 中的路径 而不是 http://www.example.com/filename.ext

ilanco 是对的,这可能来自权限问题。在Unix上,解决这个问题的一种方法是:

1 .首先,将此文件的所有权授予命令行用户,并将组设置为 Web 服务器。例如,如果服务器是 apache,则执行以下命令:

chown your_username:www-data filename

www-data是Apache Web服务器的默认组。此命令应以 root 用户身份运行。

阿拉伯数字。然后,授予组写入此文件的权限:

chmod g+w filename
相关文章: