【发布时间】:2015-01-18 22:53:14
【问题描述】:
我遇到了一个奇怪的问题,但希望有人知道这是怎么回事。
我已经从git 克隆了项目并开始在 PHPStorm 中使用它,并在我的本地 Apache 服务器上运行它。所以它第一次工作,但在我的下一次尝试中,脚本没有响应。重新启动 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 方法发送数据会在第二次工作时使脚本崩溃?它看起来像服务器端的循环转发或其他东西,但没有明显的错误,而且在 apache 日志中也是如此。
添加:看起来它与权限有关。第一次,文件上传错误 3 - 文件已部分上传。我试过chmod 755 -R ./SVG,没有结果。有人可以帮我解决这个问题吗?
【问题讨论】:
-
您是否查看了浏览器的网络工具并看到了一些不寻常的东西(例如浏览器在脚本执行最大后仍在等待响应)? PS:echo 是一种语言构造不是函数,因此您应该删除括号()。
-
也使用 shell_exec() 而不是 exec() 并捕获响应。通过 SSH 连接到服务器并使用
top查看 pdf2svg 是否开始运行。 -
@CharlotteDunois 谢谢,所以我不是 php 开发人员,但稍后会修复这些问题。浏览器只写“等待本地主机...”,但工具中绝对没有信息。