【问题标题】:Foreach loop is not working in cronjob in phpForeach 循环在 php 的 cronjob 中不起作用
【发布时间】:2021-01-08 00:36:36
【问题描述】:

我编写了一个脚本来只检查 CSV 文件并删除它们。

$dir = $getData['ftp_location']; //get the dir locations from db
echo $dir;
echo nl2br("\n"); 

$files = glob("$dir/*.csv"); //get only csv files

echo $files;
echo nl2br("\n");

foreach ($files as $tmpname)
{
   //do some stuff. I have also done echo here it is not working.
   echo "File Deleted";
}

所以我尝试了这样一个简单的 foreach 代码:

$colors = array("red", "green", "blue", "yellow");

foreach ($colors as $value) 
{
      echo "$value <br>";
}

注意:每次运行时,我都会收到一封电子邮件,说明 cronjob 运行成功并打印了回显。

这样的电子邮件:

./files/pvc/
数组

我没有在 foreach 循环中得到回声。

如“文件已删除”或“颜色”

如果我直接运行相同的代码,它可以正常工作,但不能通过 cronjob。知道为什么吗?

【问题讨论】:

  • glob() 确实返回了一个数组,因此电子邮件是正确的。
  • 是的,但我没有在 foreach 中得到回声。对于像数组内的打印颜色这样的简单代码。
  • 好的。您的代码中可能存在错误。检查 PHP 错误日志。另一个可能有问题的地方是脚本运行的目录。直接使用脚本和使用 cron 时可能不一样。确保目录和文件路径从文件系统的根目录开始。

标签: php cron


【解决方案1】:

因为csv路径是相对路径。

执行cron时,当前目录路径与php二进制路径相同(如:/usr/bin/php)。

请使用绝对路径。

$dir = __DIR__. DIRECTORY_SEPARATOR. $getData['ftp_location']; //get the dir locations from db

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多