这是一个 PHP 文件的内容:
<?
file_put_contents('test.txt', 'stuff');
echo 'complete';
?>
我叫这个test.php
,它位于/mnt
。它有777个权限。现在我进入 SSH,并执行:sudo /usr/bin/php /mnt/test.php
. complete
我在脚本底部收到消息。现在,我 cd 进入/mnt
. Text.txt 不存在。是什么赋予了?
正确的代码是这样的:
file_put_contents(__DIR__.'/test.txt', 'stuff');
echo 'complete';
否则,php将文件写入“当前工作目录”,而不是放在它的位置
您尚未指定路径,因此您将stuff
放入text.txt
当前工作目录。这将是您cd
运行前的目录(或新 shell 的默认目录)sudo
,而不是 PHP 脚本所在的目录。
更改您的代码以包含绝对路径,如下所示:
file_put_contents('/mnt/test.txt', 'stuff');
否则,PHP 只会将文件写入工作目录(通常是/home/user
)