【问题标题】:Run php script with cronjob使用 cronjob 运行 php 脚本
【发布时间】:2013-01-26 01:44:30
【问题描述】:

所以这是我的 cronjob

PATH=/package/host/localhost/php-5.4.7-1/bin:/bin:/usr/bin
PHPRC=/home/stuff/etc
* * * * * php /home/stuff/private/xFEklnTekl/cmd.php

这是 cmd.php 文件

<?php
$c = file("c.txt");
$f = fopen("c.txt", "w+");
$g = $c[0]+1;
fwrite($f, $g);
fclose($f);
?>

遗憾的是,它没有按应有的方式更新 c.txt 文件。我认为 php 脚本中的给定路径有问题。我已经尝试过只是 /c.txt 但它也没有工作。那么,有什么问题呢?

【问题讨论】:

  • 从命令行调用 cmd.php - 任何输出?有用吗?
  • 可能是文本文件的权限
  • @Dagon 从命令行运行它可以完美运行。我不确定cronjob从哪里运行php文件,这就是为什么我不知道将c.txt文件指向哪里。

标签: php linux path cron


【解决方案1】:

您的 crontab 不应包含除 cronjobs 之外的任何内容。试试这个:

* * * * * /bin/php /home/stuff/private/xFEklnTekl/cmd.php

并确保您有 +x 执行权限,以及 crontab 用户有权访问该目录。

另外,将完整路径放入

$c = file("c.txt");
$f = fopen("c.txt", "w+");

$c = file("/home/stuff/private/xFEklnTekl/c.txt");
$f = fopen("/home/stuff/private/xFEklnTekl/c.txt", "w+");

编辑 正如在 cmets 上所见,您必须使用来自 which php 的任何内容,而不是 /bin/php。在你的情况下,

* * * * * /package/host/localhost/php-5.4.4/bin/php  /home/stuff/private/xFEklnTekl/cmd.php

【讨论】:

  • 我刚收到一封邮件说/bin/sh: bin/php: No such file or directory,做了并检查了其他所有内容,但仍然无法正常工作。谢谢你!
  • 您在 crontab 中输入的命令应该可以自己运行。因此,您首先确保它可以正常工作,然后将其放入 crontab 中。要知道 php 的路径,请输入which php。类似于/bin/php/usr/bin/php 等。这是执行脚本时必须使用的路径。
  • 谢谢! * * * * * /package/host/localhost/php-5.4.4/bin/php /home/albin/private/xFEklnTekl/cmd.php 完美运行!
  • 太棒了!我编辑我的答案以包括我们的 cmets :) 如果现在一切正常,请将问题标记为已回答!
  • 完成!关于cronjobs和php的另一个问题。这个 cronjob 会像我在控制台中手动运行一样运行文件,如“php -f file.php”,还是 cronjob 会执行类似于 cURL 请求的东西?我的“真实” cmd.php 文件需要运行大约 2 小时(sleep() 函数)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-27
  • 1970-01-01
  • 1970-01-01
  • 2013-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多