amazonec2上的PHP和Python

2024-06-28 19:45:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是amazonec2obunto微实例。我写了一个php代码,它执行一个python代码,并返回一个简单字符串的结果。当我在obuntu终端上执行它时,它完美地显示了结果,但是当我通过浏览器访问它时,它什么也不显示。 我不知道为什么。实际上它不能执行python脚本。在

$tmp=exec('/usr/bin/python/var/www/相似性.py员工/失业人员/服务员)

如果有人能帮我,我会非常感激的。 PS:我使用的是MacBookPro,当我在电脑的本地主机上使用相同的代码时,一切都会完美地工作


Tags: 实例字符串代码脚本终端binvarusr
2条回答

经过一番“挠头”,我终于明白了。在

首先,您需要找出执行php的当前用户。你要么退房php.info文件归档或使用

$processUser = posix_getpwuid(posix_geteuid());
print $processUser['name'];

这将为您提供执行代码的用户。在我的例子中,它是apache,而不是www-data(我一开始就不应该这样假设)。在

之后,您需要编辑sudoers文件(etc/sudoers)

加上那边的线。在

如果你想具体点的话,你可以使用@Janith的代码。在

^{pr2}$

或者你可以简单地加上

apache ALL=(ALL)        NOPASSWD:ALL

(您可能应该只指定路径)。在

然后通过php执行脚本。在

这是访问python文件的权限问题。当您以apache用户身份(很可能是www数据)通过服务器python脚本访问运行它时。所以apache用户没有权限执行python文件。在

您可以做的是以sudo的身份运行这个命令,并在/etc/sudoers文件中添加对apache用户(www数据)的所有必要访问,如下例所示。在

 www-data ALL=NOPASSWD:/var/www/similarity.py
 www-data ALL=NOPASSWD:/usr/bin/python

这只是示例,您应该根据您的环境更改此行。在

相关问题 更多 >