简单来说,我有一个只用zip命令调用php脚本的linux脚本:
我的bash文件:
#!/bin/bash
php zip.php
我的PHP文件zip.php:
<?php
exec("zip file.zip file_1.pdf file_2.pdf file_n.pdf",$aOut,$errorCode);
这就是我得到的:
我看到它不是命令未找到错误,因为它与少量pdf文件运行良好,但它与2en参数或整个命令的长度有关。
有人可以帮忙。
答案 0 :(得分:1)
问题是命令行的最大长度为65535字节。我不知道您的命令行测试为什么起作用,也许您尝试使用短文件名进行尝试,但是一个完整的命令不能超过此限制。
我发现您的问题的原因是因为我调用了一个以Heredoc作为标准输入的命令行,而且,heredoc的长度很容易耗尽,因此我使用popen()重写了该调用,但这并没有帮你。我还没有使用zip实用程序,但是快速浏览一下它的联机帮助页便说它会将文件追加到现有的档案文件中,因此,如果您要获得最大效率,则应该能够在每64k之后或者每100,甚至什至之后分割命令行每个文件,如果您需要简单的算法。
答案 1 :(得分:0)
试试这个:
<?php
exec("zip file.zip file_1.pdf file_2.pdf file_n.pdf >/dev/null 2>&1 &",$aOut,$errorCode);
>/dev/null 2>&1 &
将在后台运行此命令。和php只是发送命令到Linux
答案 2 :(得分:0)
嗨朋友, 看来PHP没有获取文件路径或文件没有权限。
答案 3 :(得分:0)
错误代码127:
127表示“未找到命令”
或
apache用户无权执行命令
解决方案是确保在$ PATH中找到您正在使用的命令。如果命令不在您的路径中,请包含它或使用绝对完整路径。
或
授予apache用户执行命令的权限