我尝试了很多解决方案,但没有任何效果:
echo '<pre>';
shell_exec("python /home/folder/python/mapfile_compress.py");
shell_exec("sudo -u wwwexec python escapeshellcommand(/home/folder/python/mapfile_compress.py) $uid");
shell_exec("sudo chmod +x /home/folder/python/mapfile_compress.py");
system("bash /home/folder/python/mapfile_compress.py");
passthru("bash /home/folder/python/mapfile_compress.py");
passthru("/home/folder/python/mapfile_compress.py");
exec("bash /home/folder/python/mapfile_compress.py");
echo '</pre>';
我单独推出了它们,但在所有情况下,Firebug都返回了:'<pre>'
所以我尝试了基于Stack Overflow的代码:
$command = escapeshellcmd('chmod +x /home/folder/python/mapfile_compress_test.py');
echo $command;
$output = shell_exec($command);
echo $output;
#!/usr/bin/env python
开头,如果我在有效的服务器上启动它!
你知道如何从PHP文件中启动我的python文件吗?
答案 0 :(得分:1)
chmod
将返回0并且&gt;错误时为0。
确保只需将其作为Web用户执行即可运行该文件。正确设置+ x后,只需调用$ /path/to/your/file.py
即可执行它,脚本#!/usr/bin/env python
第一行中的shebang应根据您的环境定义正确的python。
您可以通过运行以下来测试:
$ /usr/bin/env python /path/to/your/file.py
因此,请检查您的文件权限,以检查该文件是否可由运行php脚本的用户执行。
只是为了测试,你可以在你的python文件中打印几行
#!/usr/bin/env python
print "test line 1"
print "test line 2"
然后,如果您已经验证了权限并正确使用了python,则可以在php中执行此操作。
$command = escapeshellcmd('/path/to/your/file.py');
$output = shell_exec($command); // get all output or use passthrough, exec will only return the last line.
echo "<pre>{$output}</pre>;
答案 1 :(得分:0)
首先,您是否在php.ini中启用了shell_exec / system / passthru命令?
shell_exec("python /home/folder/python/mapfile_compress.py");
我认为,你的$ PATH可能有问题。尝试类似:(使用python的完整路径)
shell_exec("/usr/bin/python /home/folder/python/mapfile_compress.py");
shell_exec("/usr/local/bin/python /home/folder/python/mapfile_compress.py");
答案 2 :(得分:0)
在我的情况下,如果我写这段代码就可以了:
$command = escapeshellcmd('python /path/to/your/file.py');
exec($command);