PHP AWS putObject запускает CSV-файл только с 1 строкой при запуске из cronjob - PullRequest
0 голосов
/ 15 апреля 2020

У меня проблема с передачей файла CSV с моего общего хостинга на AWS S3 bucket с помощью скрипта PHP с использованием cpanel cronjob. Процесс работает нормально, когда скрипт вызывается вручную. Но когда cronjobs запускает CSV-файл, он содержит только 1 строку!

В этой части я создаю CSV

$fp = fopen("Sample.csv", 'w');
foreach ($csvFileData as $fields) {
    fputcsv($fp, $fields);
}
fclose($fp);

И вот как я пытаюсь поместить CSV в S3 bucket:

$s3 = new Aws\S3\S3Client([
        'version' => 'latest',
        'region' => 'ap-south-1',
        'credentials' => [
            'key'    => "XXX",
            'secret' => "XXX"
        ]
    ]);

    $key = "Sample.csv";
    $bucket = 'Sample';
    $result = $s3->putObject([
        'Bucket' => $bucket,
        'Key'    => $key,
        'Body'   => 'this is the body!',
        'SourceFile' => "Sample.csv"
    ]);

Несмотря на то, что CSV имеет 30 строк, когда я планирую его через cronjob, он выдвигает CSV только с 1 строкой, но работает нормально, если я вручную запускаю сценарий PHP. Кто-нибудь может помочь?

Я только что узнал, что Cronjob имеет некоторые ограничения при запуске исполняемого файла AWS и требует наличия PATH перед командой cron, но я не понимаю, что это за патч. Я использую AWS SDK так:

require 'awsSDK/aws-autoloader.php';
use Aws\S3\S3Client; 
use Aws\Exception\AwsException;
...