我试图在后台执行python脚本,并从php脚本中获取pid,该脚本通过单击按钮调用。这里的问题是PID不存在,python脚本的任务也没有完成。我不知道发生了什么事。我已经用终端测试了python脚本,它的工作原理就像一种魅力。
<!DOCTYPE html>
<html>
<body>
<?php
echo 'Starting the mapping process';
echo exec('python frist_script.py > /dev/null 2>&1 & echo $!');
//echo exec('ls > /dev/null 2>&1 & echo $!;');
?>
</body>
</html>python脚本只是执行一个ls并将输出写入一个文件。python脚本的代码如下。
import os
import datetime, time
import sys
import argparse
import psutil
import glob
import select
os.system('ls >output_files.dat')注释:--这不是最后的脚本,而是一个测试脚本,以确认我的python调用是否正常。
任何帮助都是非常感谢的。
谢谢
PS:ls -al的输出
-rw-rw-r-- 1 acs www-data 262 May 18 16:31 execute.php
-rwxr-xr-x 1 www-data www-data 147 May 18 16:17 frist_script.py我也尝试过shell_exec();
编辑:我试着运行一个简单的shell脚本,但是这个脚本也不会被执行,但是Shell命令可以工作。
更新:-- python或脚本--在从终端php execute.php执行时工作,但在从web服务器运行时不工作。
发布于 2017-05-19 08:40:32
问题:但在从网络服务器运行时不起作用。 您的服务器是否支持?
创建一个新脚本或用以下内容替换os.system(...:
import subprocess
try:
# os.system('ls >output_files.dat')
lsoutput = subprocess.check_output('ls', stderr=subprocess.STDOUT)
print('ls output:', lsoutput)
except subprocess.CalledProcessError as e:
print("CalledProcessError:", e)从您的php script. 调用此脚本
变出
echo exec('python frist_script.py > /dev/null 2>&1 & echo $!');至
echo exec('python frist_script.py >> /tmp/php_exec 2>&1');若要查看任何错误消息,请执行以下操作。
https://stackoverflow.com/questions/44059543
复制相似问题