php shell_exec() 命令不起作用

2022-08-30 19:15:29

我正在尝试从php运行.sh文件。我尝试用shell_exec()来做这件事。但它不起作用,我在堆栈溢出中提到了许多与此相关的问题,但无法解决

我的 php 代码是(web.php)

    <?php
    echo shell_exec('/var/www/project/xxe.sh');
    echo "done";
    ?>

只有完成才是打印的。但它正在从终端(php /var/www/project/web.php)工作

在 xxe.sh,我正在调用一个python文件

    python vin.py

我还将.sh n.py文件的文件权限更改为777,请帮助


答案 1

如果你说它在终端上工作,而不是在apache上工作,那么apache的文件可能会禁用.php.inishell_exec()

查看 http://www.php.net/manual/en/ini.core.php#ini.disable-functions

您的 apache 文件可能看起来像这样php.ini

disable_functions=exec,passthru,shell_exec,system,proc_open,popen

从此列表中删除并重新启动Web服务器,尽管这是一个安全风险,我不建议这样做。shell_exec


答案 2

如果它在shell中运行良好,我认为apache是chrooted。所以 php 找不到 /var/...

或者 httpd 用户的用户没有权限输入 /var/...

如果你擅长PHP。Open dir /var/...并且readdir()和检查dir存在,检查文件存在。

这个问题可能会对你有所帮助。扫描 /home/ 与 opendir()


推荐