좀 이상한 문제가 발생했는데 누군가가 어떤 상황인지 알기를 바랍니다.첫 번째 파일 업로드 후 PHP 스크립트가 작동하지 않습니다.
git에서 프로젝트를 복제하고 PHPStorm에서 작업을 시작하여 로컬 Apache 서버에서 실행했습니다. 그래서 처음에는 작동했지만, 다음 시도에서는 스크립트가 응답하지 않았습니다. 아파치를 다시 시작하면 IDE에서 스크립트를 다시 실행하는 데 도움이되지 않습니다. 브라우저 콘솔/리소스에 대한 정보가 없습니다.
나는이 헤더에 문제가 있다고 결정했습니다, 그리고 스크립트를 다시 썼다
는$fileInputName = 'uploadedFile';
if (!array_key_exists($fileInputName, $_FILES)) {
echo ('there are no files to work with');
die();
}
$uploadName = $_FILES[$fileInputName]['tmp_name'];
$size = $_FILES[$fileInputName]['size'];
$pathToSaveSVG = realpath(dirname(__FILE__)) . '/SVG';
$fileName = $uploadName . '.pdf';
$targetName = $fileName . '.svg';
if (!move_uploaded_file($uploadName, $fileName)) {
echo ($uploadName. ' '. $fileName);
unlink($uploadName);
echo('can\'t move uploaded file');
die();
}
exec('pdf2svg ' . escapeshellarg($fileName) . ' ' . escapeshellarg($pathToSaveSVG. '/' . $targetName));
unlink($fileName);
echo $pathToSaveSVG . '/' . $targetName;
die;
HTML은 :
<form action="pdf_to_svg.php" method="POST" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
<input type="file" name="uploadedFile" id="file" accept="application/pdf" />
<input type="submit" name="submit" value="Convert " />
</form>
다음에, 반복합니다. 스크립트는 POST 데이터를 보내는 것이 아니라 이름으로 변환하는 파일을 가져가는 것이 좋습니다.
POST 메서드를 통해 데이터를 보내면 왜 두 번째로 스크립트가 작동하지 않습니까? 그것은 서버 측이나 무언가에서 순환 포워딩처럼 보이지만 오류는 보이지 않으며 아파치 로그에서도 마찬가지입니다.
ADD : 권한과 관련된 것 같습니다. 처음에는 오류 3 - 파일이 포함 된 파일 업로드가 부분적으로 업로드되었습니다. chmod 755 -R ./SVG
을 시도했지만 결과가 없습니다. 누군가 나를 알아낼 수있게 도와 줄 수 있습니까?
브라우저 네트워킹 도구를 살펴본 후 브라우저의 최대 스크립트 실행 후 브라우저가 응답을 기다리고있는 것처럼 일반적인 것을 보았습니까? 추신 : 에코는 언어 구조 * 함수가 아니므로 대괄호()를 제거해야합니다. –
또한 exec() 대신 shell_exec()를 사용하고 응답을 캡처하십시오. SSH를 통해 서버에 연결하고 pdf2svg가 실행되기 시작할 때'top'을 사용하십시오. –
@CharlotteDunois 덕분에 PHP 개발자는 아니지만 나중에이 문제를 해결합니다. 브라우저는 'Waiting for localhost ...'라고 씁니다. 그러나 도구에는 절대 정보가 없습니다. –