vNo*_*eck 3 php cron 16.04 json
Ubuntu 16.04 上有一个运行 PHP 脚本的 Cron 作业
$parseinfo = 'parseme.json';
$handle = fopen($parseinfo, 'w');
fwrite($handle, json_encode($res));
Run Code Online (Sandbox Code Playgroud)
将数据解析为 JSON 文件。PHP 脚本应该在此 PHP 脚本所在的同一文件夹中写入数据,但我遇到了一个问题,即 JSON 被保存到 root 的主目录中:
这就是我设置 Cron 作业的方式:
*/10 * * * * root /usr/bin/php /var/www/somederictory/somefolder/parse.php > /dev/null
Run Code Online (Sandbox Code Playgroud)
从终端:
*/10 * * * * root /usr/bin/php /var/www/somederictory/somefolder/parse.php > /dev/null
Run Code Online (Sandbox Code Playgroud)
简而言之:JSON 正在被保存,/root而我希望它被保存到/var/www/somederictory/somefolder/
我应该怎么做来修复它?
编辑:它不是重复的,PHP 可以工作,正在保存 JSON,但是方式错误。我要求帮助我了解当前的 Cron 设置有什么问题。
默认情况下,Cron 作业在用户的主目录中执行。虽然在您的脚本中没有提供要保存输出文件的路径,但它将保存到执行脚本的目录中。
根据问题,要生成.json文件到脚本所在的同一个目录下。因此(在这种情况下)您必须以某种方式更改您的代码,如下所示:
$parseinfo = 'parseme.json';
$path = realpath(dirname(__FILE__));
$handle = fopen("$path/" . $parseinfo, 'w');
fwrite($handle, json_encode($res));
Run Code Online (Sandbox Code Playgroud)
如果您不想更改脚本,可以通过以下方式更改 Cron 作业:
*/10 * * * * root cd /var/www/somederictory/somefolder/ && php parse.php > /dev/null
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1072 次 |
| 最近记录: |