2013-07-15 189 views
0

我有一个python文件,我想在执行php页面时执行。 python文件与php文件位于同一个文件夹中。执行的python脚本编辑php文件访问的文本文件。从PHP执行python文件 - Linux

我有以下代码:

<?php 
exec("python somefile.py",$output); 
$file = fopen("test.txt",'r'); 
.... 

出于某种原因,python脚本永远不会被执行。我知道这一点,因为我可以从文本文件中的变化中看到它。 由于我不确定脚本是否可执行,因此我在命令中包含了“python”。 我也跑了:

chmod +x somefile.py 

只是为了确保这不是原因。但是这也没有帮助。 我应该改变什么以使php页面在被调用时执行python脚本?

+2

你能够运行exec()吗?很多时候,你会发现它在PHP的禁用功能。 – Pitchinnate

+0

你试过'/ usr/bin/python ...'吗? '$ PATH'可能无法在Web服务器环境中使用 – hek2mgl

+0

我不确定是否属于这种情况。正如我在加载php页面时看到的没有错误。有没有办法启用exec()函数?或者有没有办法解决它? –

回答

1

这很可能是一个权限问题。

尝试

echo exec("whoami"); 

这将让你知道谁PHP是运行的。然后你需要验证这个用户可以运行python脚本。如果该文件不是由运行python的相同守护程序创建的,则很可能会被拒绝。

更新

这将让你知道谁拥有所有你正在使用的文件。被写入的文件需要由运行python的用户写入。如果你从ssh运行python,那么这个用户很可能与你从exec运行python的用户不一样。

echo exec('whoami') . "<br>"; 
echo exec("ls -l test.txt") . "<br>"; 
echo exec("ls -l somefile.py") . "<br>"; 

更新2

因为我经常忘记这一点的存在。

passthru('python somefile.py 1 2>&1'); 

这将执行您的python文件,并将stderr输出到标准输出。

+0

它说apache。 –

+0

apache用户可以运行python脚本吗?并且apache用户可以写入文件吗? –

+0

我不太确定。我是linux和php的新手。这可能是非常天真的,但Apache不是服务器?这是否有像用户帐户? 请点击此处。 –