Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 解压缩一组图像时出错_Php_Bash - Fatal编程技术网

Php 解压缩一组图像时出错

Php 解压缩一组图像时出错,php,bash,Php,Bash,我正在将公共领域的书籍从archive.org导入我的网站,并设置了一个php导入脚本来完成这项工作。但是,当我尝试导入图像并运行 exec( "unzip $images_file_arg -d $book_dir_arg", $output, $status ); 它偶尔会给我返回$status 1。这样行吗?到目前为止,我对导入的图像没有任何问题。我在手册页上查找解压,但没有告诉我多少。这可能会导致问题吗?我是否必须单独检查每张图片,或者我是否安全?也许您更适合使用php集成的zipar

我正在将公共领域的书籍从archive.org导入我的网站,并设置了一个php导入脚本来完成这项工作。但是,当我尝试导入图像并运行

exec( "unzip $images_file_arg -d $book_dir_arg", $output, $status );

它偶尔会给我返回$status 1。这样行吗?到目前为止,我对导入的图像没有任何问题。我在手册页上查找解压,但没有告诉我多少。这可能会导致问题吗?我是否必须单独检查每张图片,或者我是否安全?

也许您更适合使用php集成的ziparchive类。


特别是,如果提取成功,它将返回TRUE,否则返回FALSE。

编辑::Oops。我应该马上检查手册页。它们告诉我们错误代码的含义:

退出状态(或错误级别)近似于PKWARE定义的退出代码,并采用以下值,VMS下除外:

  • 正常;未检测到错误或警告

  • 遇到一个或多个警告错误,但处理仍然成功完成。这包括ZipFile,其中一个或多个文件由于不支持的压缩方法或未知密码的加密而被跳过

  • 检测到zipfile格式中的一般错误。处理可能已成功完成;其他档案管理员创建的一些破损的拉链有简单的解决方法

  • 检测到zipfile格式中存在严重错误。处理可能立即失败

  • (更多)

    所以,显然有些档案中的文件被跳过了,但zip并没有崩溃;它只是尽了它所能



    它确实应该可以工作,但某些文件名会带来复杂的问题。他们中是否有人对不寻常的角色有潜在的狡猾
    escapeshellarg
    当然是值得研究的。如果您得到一个错误的返回状态,您应该担心,因为这意味着zip退出时出现了一些错误或其他。至少,我建议您在这种情况下记录文件名(
    error\u log($filename)
    ),并查看是否有任何可能导致问题的内容。zip本身完全独立于PHP运行,如果shell传递了正确的参数,并且文件确实已下载并准备解压,那么一切都会很好。

    我已经按照您的建议使用escapeshellarg对文件进行了转义(我可能应该提到这一点)。我已经确认文件是正确的并且解压正确,但是我只是想知道1的返回状态可能意味着什么(如果它可能是一个重大问题)。哦!我真傻。我以为1只是一个普通的失败代码;许多应用程序从特定错误代码的较高数字开始。哎呀。在答案中粘贴手册页的相关部分。您是否确认zip中的每个文件都已正确提取,而不仅仅是部分文件?在任何情况下,它不能出来的那些可能对你都不重要。