当以cron作业运行时,PHP脚本会保存空的图像文件

时间:2019-01-29 16:43:22

标签: php cron cpanel

我有一个脚本,可以从外部服务器下载图像并将其保存在网站根目录下的文件夹中。该脚本文件也位于网站的根目录中。

图像文件夹:/ public_html / images /

脚本:/public_html/script.php

当我手动运行文件(example.com/script.php)时,所有下载的图像文件都会正确保存在该文件夹中。但是,当cron作业执行该文件时,所有图像将以0字节的大小保存。

在cron作业运行之前,我试图清空文件夹。我已将权限更改为777。脚本手动运行且cron看起来相同时的日志文件。

cron作业是在cronel crontab中设置的。

请帮助我弄清楚发生了什么事情。

$dir = "/home/example/public_html/images/";

foreach (scandir($dir) as $item) {
    if ($item == '.' || $item == '..') continue; 
    unlink($dir.DIRECTORY_SEPARATOR.$item);
}
$ftp_server = 'www2.housescape.org.uk';
$ftp_conn = ftp_connect($ftp_server);
$ftp_user = 'user';
$ftp_pass = 'password';
ftp_set_option($ftp_conn, FTP_TIMEOUT_SEC, 3600);
if(ftp_login($ftp_conn, $ftp_user, $ftp_pass)){
            ftp_pasv($ftp_conn, true);

            $images = ftp_nlist($ftp_conn, '/images/'); 
            $c = 0;
            foreach($images as $image){
                $c = $c + 1;

                echo "ftp://user:password@www2.housescape.org.uk:21".$image." / ";  
                $urltoget="ftp://user:password@www2.housescape.org.uk:21".$image;
                echo $thefile=basename($image);
                echo "<br>"; 

                $content = file_get_contents("ftp://user:password@www2.housescape.org.uk:21".$image);
                file_put_contents("/home/example/public_html/images/".$thefile, $content);

            }
            if ($count1>0) { echo "No File Change"; }
            ftp_close($ftp_conn);
}
else{
    echo 'Failed Login!';
}   

1 个答案:

答案 0 :(得分:0)

这只是帮助查找错误的建议,而不是答案:

您是否检查了CRON PHP环境是否启用了allow_url_fopen

<?php

if (!ini_get('allow_url_fopen')) {
  die("'allow_url_fopen' is not enabled in the php.ini");
}