代码之家  ›  专栏  ›  技术社区  ›  Abhinav

让php运行python脚本

  •  13
  • Abhinav  · 技术社区  · 14 年前

    我正在尝试使用PHP运行一个python程序。下面是代码

    $command = '/usr/local/bin/python script.py file';
    $temp = exec($command, $output);
    

    这可以通过命令行工作,但不能通过浏览器运行。我正在使用Apache,所以它可能需要正确的特权?我对Linux还很陌生,不知道如何让它正常工作。

    任何帮助都将不胜感激!

    编辑1:

    试图使用 proc_open 但什么也没发生。我给出了脚本的完整路径。使脚本可执行,但没有运气。我可以在服务器上尝试其他东西吗?(这是百分之五)

    4 回复  |  直到 11 年前
        1
  •  6
  •   jdizzle    14 年前

    您需要将完整路径传递给脚本,并且还需要确保运行Web服务器的用户可以读取该脚本(这意味着路径中的每个目录对于Web用户必须是+X)。

        2
  •  6
  •   Abhinav    14 年前

    意识到问题所在:

    1. 域被设置为虚拟主机,并且启用了PHP的安全模式。proc_open、exec、system、passthru等。我想在安全模式下不工作。

    2. 将脚本放在vhost可访问的目录中。Apache无法访问vhost文档根目录之外的目录。

    谢谢你的帮助!

        3
  •  2
  •   YOU    14 年前

    几个检查点

    • script.py应通过完整路径,例如, /home/abhinav/script.py
    • script.py应该是可执行的, chmod +x script.py
        4
  •  0
  •   Ryan Buckley    11 年前

    为了让我的codeigner助手运行一个python脚本,我必须放置!/在python脚本的第一行使用usr/bin/python,而不是从exec调用python。

    +1用于同时执行chmod+x

    我的助手如下:

    <?php
        function scrape($site, $key, $user_id)
        {
            $cmd = str_replace('system/','',BASEPATH).APPPATH."python/spider.py -u $site -k $key -i $user_id";
            $resp = exec($cmd, $out);
            return $out;
        }
    ?>