无法从 PHP 运行 Python 脚本

无法从 PHP 运行 Python 脚本

这个问题已经被问过很多次了,也提出了很好的建议,但提问者的突然放弃并没有起到什么帮助作用,因为他们从来没有回过头来告诉我们什么方法有效(假设它最终一定会有效)

我正在尝试从 PHP 运行 Python 脚本,但未能成功。环境:PHP 7.3、Python 3.8、CentOS 7、Apache 2.4、Bluehost VPS。

  • 尝试了exec两者shell_exec

  • apachectl -S显示 apache 服务器以 nobody:nobody 身份运行

  • 添加没有人在 sudoer 中使用nobody ALL=(ALL) NOPASSWD: /etc/bin/python3

  • ls -l testing.py为 Python 脚本添加了执行权限,并将所有者更改为 nobody(与 apache 相同)-rwxr-xr-x 1 nobody nobody

  • Python 脚本本身可以在 shell 中顺利运行。

这是我的代码:

<?php
error_reporting(E_ALL);
$command = 'python3 /home/uploads/testing.py';
$command = escapeshellcmd($command);
$shelloutput = exec($command,$output, $ret_code);
echo "<h1>";
echo $shelloutput;
echo $output;
echo $ret_code;
echo "</h1>";
?>

Python脚本:

#!/usr/bin/env python3
import sys
print("Hello")
sys.exit(8)

当我从浏览器运行 PHP 文件时,什么也没得到。如果能帮助解决这个问题,我将不胜感激。

答案1

发现问题出在 php.ini 文件中,删除disable_functions=""指令后 Python 脚本就可以正常工作。正如 Gerald 在评论中提到的,我不需要向sudoers文件或更改文件权限/用户(标准权限属性除外)+x(或 0755)

相关内容