【问题标题】:PHP and Python on amazon ec2亚马逊 ec2 上的 PHP 和 Python
【发布时间】:2013-07-18 04:36:35
【问题描述】:

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

$tmp = exec('/usr/bin/python /var/www/similarity.py 雇员/失业者/服务员');

如果anyonw 可以帮助我,我将不胜感激。 PS:我使用的是 mac book pro,当我在计算机的 localhost 中使用相同的代码时,一切正常

【问题讨论】:

    标签: php python ubuntu amazon-ec2


    【解决方案1】:

    经过一番“摸不着头脑”,我终于想通了。

    首先你需要找出正在执行 php.ini 的当前用户。您可以查看 php.info 文件或使用

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

    这将为您提供正在执行代码的用户。就我而言,它是apache 而不是www-data(我不应该首先假设)。

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

    在那边添加行。

    如果您想具体一点,可以使用@Janith 的代码。

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

    或者你可以简单地添加

    apache ALL=(ALL)        NOPASSWD:ALL
    

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

    然后通过php执行脚本。

    【讨论】:

      【解决方案2】:

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

      您可以做的是将此命令作为 sudo 运行,并在 /etc/sudoers 文件中添加对 apache 用户(www-data)的所有必要访问权限,如下例所示。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多