首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试从php脚本运行python脚本:返回pid但不执行

问尝试从php脚本运行python脚本:返回pid但不执行
EN

Stack Overflow用户
提问于 2017-05-19 00:11:50
回答 1查看 652关注 0票数 1

我试图在后台执行python脚本,并从php脚本中获取pid,该脚本通过单击按钮调用。这里的问题是PID不存在,python脚本的任务也没有完成。我不知道发生了什么事。我已经用终端测试了python脚本,它的工作原理就像一种魅力。

代码语言:javascript
复制
<!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脚本的代码如下。

代码语言:javascript
复制
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的输出

代码语言:javascript
复制
-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服务器运行时不工作。

EN

回答 1

Stack Overflow用户

发布于 2017-05-19 08:40:32

问题:但在从网络服务器运行时不起作用。 您的服务器是否支持?

创建一个新脚本或用以下内容替换os.system(...:

代码语言:javascript
复制
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. 调用此脚本

变出

代码语言:javascript
复制
 echo exec('python frist_script.py > /dev/null 2>&1 & echo $!');

至

代码语言:javascript
复制
 echo exec('python frist_script.py >> /tmp/php_exec 2>&1');

若要查看任何错误消息,请执行以下操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44059543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档