【发布时间】:2015-10-17 08:05:11
【问题描述】:
我需要一些帮助,因为我的脚本没有创建文件。我想在 cronjob 上运行这个脚本。我正在将 Debian Linux 与 PHP 和 Apache 一起使用。
我的脚本位于 /var/www/myapplication 文件夹。我想在 /var/www/myapplication/testfolder 创建/写入一个文件。
我在php脚本中使用的命令是:
echo `whoami`;
exec ('whatever >> testfolder/testing.txt');
文件夹权限:
drwxrwxrwx 2 www-data www-data 4096 Jul 27 09:55 testfolder
-
当我直接从浏览器运行脚本时 (http://127.0.0.1/myscript.php)
- 它不会创建文件 (testing.txt)
- echo whoami 说:www-data
当我从具有 root 权限 (su) 的服务器运行脚本时:
php -q /var/www/myapplication/myscript.php >>log3.txt
- 它创建文件 (testing.txt)
- echo whoami 说:root
-
log3.txt 在 /var/www/myapplication 文件夹中创建
-
当我从 crontab 运行脚本时:
- /usr/bin/php -q /var/www/myapplication/myscript.php >>log3.txt
-
它不会创建文件 (testing.txt)
- echo whoami 说:root
- log3.txt 在 /root 文件夹中创建
为什么没有创建 testing.txt 我从 crontab 作为 cronjob 运行我的脚本?
【问题讨论】:
-
你为什么不用内置的 PHP 文件函数?
-
EM-Creations:因为我想重定向'whatever'命令输出来创建必要的文件(testing.txt)。
-
试试
shell_exec。另外,请确保 www-data 用户对该目录具有正确的写入权限。 -
EM-Creations:谢谢。我试过shell_exec,但结果是一样的:没有创建测试文件,只有log3.txt。 log3.txt 包含:root