Внутренняя ошибка сервера AWS S3: попытка загрузить файл PDF за другим

Я пытаюсь сгенерировать PDF использование файла FPDF и PHP и позже загрузить в AWS-s3 и генерировать URL-адрес. Когда я выполнил приведенный ниже код в моем локальная машина С помощью XAMPP он генерирует файлы и загружает их в S3.

Но когда я развернул в Сервер AWS как API он загружает только первый файл и для других его подачи 500 ошибка сервера

Ниже мой код, который я использовал в локальной машине

    require '../fpdf/fpdf.php';
require 'start.php';

use Aws\Exception\AwsException;

$location = "bangalore";
$db     =   getConnection();
$query   = "SELECT first_name FROM customer_info where location = '$location'";
$execute = $db->query($query);
$result  = $execute->fetchAll(PDO::FETCH_ASSOC);

for($i = 0; $i < $len; $i++) {
$pdf = new FPDF();
$pdf->AddPage();

$pdf->SetFont('Arial', 'B', 14);
$txt = "Legal Document of ".$result[$i]['first_name'];
$pdf->Cell(180, 0, $txt, 0, 1, 'C');
$pdf->Line(5, 20, 200, 20);

$docname = $result[$i]['first_name'] . ".pdf";
$filepath = "../file/{$docname}";
$pdf->Output($filepath, 'F');

//s3 client
try {
$res = $S3->putObject([
'Bucket' => $config['S3']['bucket'],
'Key' => "PATH_TO_THE_DOCUMENT/{$docname}",
'Body' => fopen($filepath, 'rb'),
'ACL' => 'public-read'
]);

var_dump($res["ObjectURL"]);
} catch (S3Exception $e) {
echo $e->getMessage() . "\n";
}

}

Выход:

   Array ( [0] => Array ( [first_name] => Mohan ) [1] => Array ( [first_name] => Prem ) [2] => Array ( [first_name] => vikash ) [3] => Array ( [first_name] => kaushik ) )

string(70) "https://streetsmartb2.s3.amazonaws.com/PATH_TO_THE FILE/Mohan.pdf"
string(72) "https://streetsmartb2.s3.amazonaws.com/PATH_TO_THE FILE/Prem%20.pdf"

API-код

      //pdf generation another api
$app->post('/pdfmail', function() use($app){

//post parameters
$location = $app->request->post('loc');
$id       = $app->request->post('id');$db = getConnection();
$query   = "SELECT * FROM customer_info where location = '$location'";
$execute = $db->query($query);
$result  = $execute->fetchAll(PDO::FETCH_ASSOC);
$len = sizeof($result);

//request array
$request = array();

if($result != Null) {
for($i = 0; $i < $len; $i++) {
$pdf = new FPDF();
$pdf->AddPage();

$pdf->SetFont('Arial', 'B', 14);
$txt = "Document of Mr." . $result[$i]['first_name'];
$pdf->Cell(180, 0, $txt, 0, 1, 'C');
$pdf->Line(5, 20, 200, 20);

$docname = $result[$i]['first_name'] . ".pdf";
var_dump($docname);
$filepath = "../file/{$docname}";
var_dump($filepath);
$pdf->Output($filepath, 'F');//s3 client
require '../aws/aws-autoloader.php';

$config = require('config.php');//create s3 instance
$S3 = S3Client::factory([
'version' => 'latest',
'region' => 'REGION',
'credentials' => array(
'key' => $config['S3']['key'],
'secret' => $config['S3']['secret']
)
]);try {
$res = $S3->putObject([
'Bucket' => $config['S3']['bucket'],
'Key' => "PATH_TO_FILE{$docname}",
'Body' => fopen($filepath, 'rb'),
'ACL' => 'public-read'
]);
var_dump($res["ObjectURL"]);
} catch (S3Exception $e) {
echo $e->getMessage() . "\n";
}

}
}

ВЫХОД, КОГДА ИСПЫТАННЫЙ В ПОСТМАНЕ

    string(10) "vikash.pdf"string(18) "../file/vikash.pdf"string(71) "https://streetsmartb2.s3.amazonaws.com/PATH_TO_FILE/vikash.pdf"string(13) "pradeepan.pdf"string(21) "../file/pradeepan.pdf"

После этого я получаю внутреннюю ошибку сервера.

0

Решение

Вместо использования require_once я использую require … Итак, когда код проходил, он снова и снова создавал класс AWS.

Код

      //s3 client
require '../aws/aws-autoloader.php'; //use require_once

$config = require('config.php');//create s3 instance
$S3 = S3Client::factory([
'version' => 'latest',
'region' => 'REGION',
'credentials' => array(
'key' => $config['S3']['key'],
'secret' => $config['S3']['secret']
)
]);
0

Другие решения

Других решений пока нет …