让PHP运行Python脚本

时间:2010-02-08 06:41:42

标签: php python exec

我正在尝试使用PHP运行Python程序。这是代码

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

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

任何帮助将不胜感激!

修改1:

试图使用proc_open但没有任何反应。我给出了脚本的完整路径。使脚本可执行但没有运气。我可以在服务器上尝试其他任何东西吗? (这是CentOS 5)

4 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:6)

意识到错误:

  1. 该域已设置为虚拟主机,并启用了PHP的safe_mode。 proc_open,exec,system,passthru等我觉得不能在safe_mode下工作。

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

  3. 感谢您的帮助!

答案 2 :(得分:2)

几个检查站

  • script.py应该传递完整路径,例如/home/abhinav/script.py
  • script.py应该是可执行的,chmod +x script.py

答案 3 :(得分:0)

要让我的CodeIgniter助手运行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;
    }
?>