Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python';s subprocess.call(“touch”和“…”)未从PHP成功运行_Php_Python_Apache2 - Fatal编程技术网

Python';s subprocess.call(“touch”和“…”)未从PHP成功运行

Python';s subprocess.call(“touch”和“…”)未从PHP成功运行,php,python,apache2,Php,Python,Apache2,我对使用PHP在服务器上运行Python脚本之类的东西还不熟悉。我使用简单的PHP代码成功运行了一些脚本,如下所示: <html> <head> </head> <body> script output:<br> <?php $command = escapeshellcmd('/path/user/public_html/test.py'); $output = shell_exec($command); echo $outp

我对使用PHP在服务器上运行Python脚本之类的东西还不熟悉。我使用简单的PHP代码成功运行了一些脚本,如下所示:

<html>
<head>
</head>
<body>
script output:<br>
<?php 
$command = escapeshellcmd('/path/user/public_html/test.py');
$output = shell_exec($command);
echo $output;
?>
</body>
</html>
#!/usr/bin/env python
from subprocess import call
call(["ls", "-l"])
#!/usr/bin/env python
from subprocess import call
call(["touch", "/path/user/public_html/test.txt"])
无法成功运行的Python脚本如下所示:

<html>
<head>
</head>
<body>
script output:<br>
<?php 
$command = escapeshellcmd('/path/user/public_html/test.py');
$output = shell_exec($command);
echo $output;
?>
</body>
</html>
#!/usr/bin/env python
from subprocess import call
call(["ls", "-l"])
#!/usr/bin/env python
from subprocess import call
call(["touch", "/path/user/public_html/test.txt"])
我不明白为什么第一个有效,第二个无效。这是怎么回事


服务器运行的是Scientific Linux 5,我有用户级而不是根级别的服务器控制权。

直接运行第二个Python程序。会发生什么?简单地说:如果PHP在某个情况下没有捕获标准输出,那么就不会生成适当的标准输出流。因此,抛开PHP/Apache是罪魁祸首的断言(除了它们改变了Python运行的环境),只关注Python,特别是执行的命令之间的差异。感谢您的建议。当我直接运行第二个Python程序(
Python test.py
/test.py
)时,它成功运行,并创建了文件
test.txt
。因此,请返回“除非它们更改Python运行的环境”。两名可能的罪犯是1。权限(例如,不在目录上写入)或;2.当前工作目录意外。再次感谢您的想法。我认为指定的目录很好(它是完整路径),因此可能是由于某些原因Apache2无法使用这些权限。我已经创建了一个新目录,在程序中指定了它,并在其上运行
chmod 777
,但是文件
test.txt
仍然没有在其中创建。我不知道下一步该怎么办。