PHP скрипт сохраняет пустые файлы изображений при запуске как задание cron - PullRequest
0 голосов
/ 29 января 2019

У меня есть скрипт, который загружает изображения с внешнего сервера и сохраняет их в папке в корне сайта.Файл скрипта также находится в корне сайта.

папка для изображений: / public_html / images /

script: /public_html/script.php

Когда я запускаю файл вручную (example.com/script.php) всескачанные файлы изображений правильно сохраняются в папке.Но когда файл выполняется заданием cron, все изображения сохраняются с размерами 0 байт.

Я пытался очистить папку перед запуском задания cron.Я изменил права доступа на 777. Файл журнала, когда скрипт запускается вручную и поскольку cron выглядит одинаково.

Задание cron настроено в cpanel cpanel.

Пожалуйста, помогите мне понятьчто происходит.

$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 голосов
/ 29 января 2019

Это только предложение, помогающее отследить ошибку, а не ответ:

Вы проверили, включена ли в среде CRON PHP allow_url_fopen ??

<?php

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

...