簡體   English   中英

嘗試從php腳本運行python腳本:返回pid,但不執行

[英]trying to run a python script from a php script: returns a pid but doesn't execute

我試圖在后台執行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命令可以正常工作。

更新:從終端php execute.php執行時python腳本或shell腳本有效,但從Web服務器運行時不起作用。

問題 :...但是從Web服務器運行時不起作用。
請問您的服務器 PHP的支持?

創建一個新腳本或將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調用此php script


 echo exec('python frist_script.py > /dev/null 2>&1 & echo $!');

 echo exec('python frist_script.py >> /tmp/php_exec 2>&1');

查看任何錯誤消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM