【发布时间】:2019-06-22 20:38:26
【问题描述】:
我有一个脚本,可以从外部服务器下载图像并将它们保存在网站根目录的文件夹中。该脚本文件也在网站的根目录中。
图片文件夹:/public_html/images/
脚本:/public_html/script.php
当我手动运行文件(example.com/script.php)时,所有下载的图像文件都正确保存在文件夹中。但是当文件由 cron 作业执行时,所有图像都以 0 字节的大小保存。
我尝试在 cron 作业运行之前清空文件夹。我已将权限更改为 777。脚本手动运行时的日志文件和 cron 看起来一样。
cron 作业在 cpanel 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!';
}
【问题讨论】:
-
请把script.php的内容贴出来
-
在写入文件之前应该检查
file_get_contents()是否成功。 -
谢谢,@Barmar
file_get_contents()在手动运行时返回成功,但在 cron 作业中返回错误。