【问题标题】:Can't execute shell script from php. Returns code 126无法从 php 执行 shell 脚本。返回代码 126
【发布时间】:2020-05-18 14:30:59
【问题描述】:

我正在尝试使用 PHP 脚本从我的网站执行 shell 脚本,但我不断收到以下输出:

输出:数组()返回:126

我知道这与权限有关,但我授予了所有可能的权限 ^^' (777)

这里是php源码:

exec('importData.sh', $output, $return);
echo "Output: ";
print_r($output);
echo " Return: " . $return . "</pre>";

importData 文件包含以下内容:

#!/bin/bash
echo "Hello";

这只是一个测试脚本,还有更多... shell 脚本位于我的网站所在的远程服务器上。 提前致谢。

【问题讨论】:

    标签: php shell


    【解决方案1】:

    来自https://www.gnu.org/software/bash/manual/html_node/Exit-Status.html

    如果找到命令但不可执行,则返回状态为 126。

    也许您确实授予了执行脚本的权限,但执行它的用户根本没有执行 bash 甚至 echo 的权限

    如果你不想检查你的 bash 位置或权限,你可以尝试删除 shebang 行 (#!/bin/bash),它不是很干净,但如果你的脚本很简单,大多数时候不需要它并且可以用任何shell执行

    【讨论】:

    • ..... 那么我该如何解决这个问题呢? ....我在混合 php 和 shell 脚本方面没有太多经验 ....
    • 这取决于您在远程服务器上的权限级别。如果它不是自托管的,您应该在您的托管中看到执行脚本的用户(如果您使用 Apache,可能是“www-data”)可以执行 bash。如果您有权访问服务器,您可以尝试ls -l /bin/bash(如果位置合适)来检查权限
    • 感谢您的帮助,实际上我尝试打印错误并发现问题出在以下行:#!/bin/bash, error: /bin/bash^M: bad interpreter:没有这样的文件或目录
    • 你的 bash 真的在 /bin/bash 吗?您是否尝试过没有 shebang 行的脚本?
    • 它可以在没有线路的情况下工作......太奇怪了......谢谢你的帮助我真的被卡住了^^'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    • 2019-12-29
    • 2013-06-13
    • 1970-01-01
    • 2016-07-02
    • 2020-11-19
    相关资源
    最近更新 更多