无法从PHP运行Python脚本并将打印输出到浏览器

时间:2018-08-24 22:15:50

标签: php python amazon-web-services

我已经看到很多其他人遇到类似的问题,他们无法从PHP运行Python脚本。我遇到的情况也一样,但是我尝试了人们推荐的所有解决方案,但还是没有运气。我也有全新的系统安装,并且使脚本尽可能简单。无论我做什么,shell_exec()都会返回NULL。

这是如何复制我的问题:

  1. 在Amazon AWS上启动t2.micro EC2服务器
  2. 将其配置为网络服务器(instructions here
  3. 使用以下代码将index.php文件上传到/ var / www / html:

<?php 
$command = escapeshellcmd('sudo /usr/bin/python '.__DIR__.'/script.py');
$output = shell_exec($command);
exit(var_dump($output));
  1. 使用以下代码将script.py文件上传到同一目录:

#!/usr/bin/python

print('Hello!')
  1. 转到AWS公共URL。您将收到的响应为“ NULL”

因此,为尝试解决此问题,我还将.py文件的用户组更改为“ apache”,并在.py文件上运行了chmod + x。我确认ec2-user和apache在sudo组中。还是没有运气!所以我没有尝试过什么?我缺少什么,或者在哪里可以找到错误日志?

1 个答案:

答案 0 :(得分:0)

使用文件常量__FILE__来确定pyhton脚本的路径,只有在您应用dirname函数的情况下,此方法才有效-否则您会得到类似/var/www/html/script.php/script.py的信息,但是实际上只需要/var/www/html/script.py

有两种简单的解决方案。使用dirname或直接使用__DIR__常量。

$command = escapeshellcmd('sudo /usr/bin/python ' . __DIR__ . '/script.py');

$command = escapeshellcmd('sudo /usr/bin/python ' . dirname(__FILE__) . '/script.py');