我正在尝试使用PHP运行Python程序。这是代码
$command = '/usr/local/bin/python script.py file';
$temp = exec($command, $output);
这可以通过命令行工作,但不能通过浏览器运行。我正在使用Apache,所以它可能需要正确的权限?我对Linux很陌生,不知道如何使用它。
任何帮助将不胜感激!
修改1:
试图使用proc_open
但没有任何反应。我给出了脚本的完整路径。使脚本可执行但没有运气。我可以在服务器上尝试其他任何东西吗? (这是CentOS 5)
答案 0 :(得分:6)
您需要传递脚本的完整路径,并且还需要确保运行Web服务器的用户可以读取脚本(这意味着路径中的每个目录必须是Web用户的+ x)。
答案 1 :(得分:6)
意识到错误:
该域已设置为虚拟主机,并启用了PHP的safe_mode。 proc_open,exec,system,passthru等我觉得不能在safe_mode下工作。
将脚本放在vhost可访问的目录中。 Apache无法访问vhost文档根目录之外的目录。
感谢您的帮助!
答案 2 :(得分:2)
几个检查站
/home/abhinav/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;
}
?>