Foreach循环在php中的cronjob中不起作用

Foreach循环在php中的cronjob中不起作用,php,cron,Php,Cron,我写了一个脚本,只检查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

我写了一个脚本,只检查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>";
}
$colors=数组(“红色”、“绿色”、“蓝色”、“黄色”);
foreach($颜色为$值)
{
回显“$value
”; }
注意:每次运行时,我都会收到一封电子邮件,说明cronjob已成功运行并打印了echo

类似这样的电子邮件:

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

foreach ($colors as $value) 
{
      echo "$value <br>";
}
./files/pvc/
数组

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

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


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

因为csv路径是相对路径

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

请使用绝对路径

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


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