执行命令 returns 127 错误代码

Exec command returns 127 error code

为了简单起见,我有一个 linux 脚本,它调用一个 php 脚本,只有一个 zip 命令:

My bash file :

#!/bin/bash
  php zip.php 

My PHP file zip.php :

<?php
exec("zip file.zip file_1.pdf file_2.pdf file_n.pdf",$aOut,$errorCode);

这是我得到的:

我看到它不是命令未找到错误,因为它在少量 pdf 文件上运行良好,但它与 2en 参数或整个命令的长度有关。

有人可以帮忙。

试试这个:

<?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

Hi Friend, It seems the PHP is not getting the file path or file doesn't have permission.

错误代码 127:

127 表示 "command not found"

apache 用户没有执行命令的权限

解决方案

解决方案是确保您正在使用的命令可以在您的 $PATH 中找到。如果该命令不在您的路径中,请包含它或使用它的绝对完整路径。

授予 apache 用户执行命令的权限

问题是命令行的最大长度是 65535 字节。我不知道为什么你的命令行测试有效,也许你已经用短文件名试过但一个完整的命令不能超过这个限制。

我发现你的问题的原因是因为我调用了一个带有 heredoc 作为标准输入的命令行,而且 heredoc 的长度很容易 运行 消失所以我使用 popen( ) 但这对你没有帮助。我还没有使用过 zip 实用程序,但是快速浏览一下它的联机帮助页说它会将文件附加到现有档案中,因此如果您想要最大效率,或者每 100 甚至 100 之后,您应该能够在每 64k 之后拆分命令行每个文件,如果你想要一个简单的算法。