[英]Execute python in a php script using shell_exec()
我在尝试在php服务器(LAMP)中执行python时遇到了一个奇怪的问题。 (safe_mode关闭)
如果我输入:
$output = shell_exec("ls -lah");
echo "<pre>$Output</pre>";
我得到了ls
命令的结果。 $output = shell_exec("tar --version");
和其他应用程序,例如gzip。
但是,如果我切换以下任何一行:
$output = shell_exec("python --version");
$output = shell_exec("python2.7 --version");
$output = shell_exec("/usr/bin/python --version");
$output = shell_exec("python my_script.py");
和其他类型的变种,我没有结果。 该命令未被执行,未创建python bitecode且echo
保持静默。
我也尝试过exec()
命令,但没有成功。
我想这可能会有所帮助......
看起来python调用的输出需要正确路由。 我能够在我的index.php文件中使这个工作返回python版本...
shell_exec("python -V 2>&1");
这是我找到答案的地方。
我认为内核无法找到安装它的python的路径..如果你可以做echo $ PATH..it将显示搜索命令的所有路径,如果给出在那里添加你的python部分然后它可能工作或者你可以给出绝对路径(除了/ usr / bin /)看看它是否有效..我也需要测试它。
是什么
which python
从命令行和shell_exec()告诉你? 它应该告诉你它找到了哪个(如果有的话)Python解释器(来自$PATH
)。 不要忘记,Linux命令行中使用的$PATH
很可能与shell_exec()使用的$PATH
不同! 一旦找到要使用的Python解释器,就可能需要在shell_exec()中对其进行硬编码。
如果您尝试使用以下代码运行python脚本
$output = shell_exec("python my_script.py");
你需要为my_script.py使用绝对路径,并为python文件提供所有权限(我不确定哪些是足够的)。
Web服务器很可能没有适当的权限来执行shell命令。 要解决此问题,请运行'sudo visudo'命令并将以下行添加到sudoers文件中:
www-data ALL = NOPASSWD:全部
此外,请确保/ var / www目录属于www-data用户和组(使用sudo chown -R www-data:www-data / var / www设置正确的所有者)。 详细信息请访问http://www.raspberry-pi-geek.com/Archive/2014/07/PHP-on-Raspberry-Pi
另请参阅无法从php执行python脚本
我想你需要参考你的python的完整路径。
例如,使用此代码:
$output = shell_exec("/usr/bin/python full_path/my_script.py")
代替:
$output = shell_exec("python my_script.py");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.