簡體   English   中英

PHP exec():運行bash腳本以配置環境,然后執行Python程序

[英]PHP exec(): Running bash script to configure environment then executing Python program

外殼是tcsh。 PHP v5.1.6。 紅帽5.7。 安全模式為OFF。

使用exec從瀏覽器運行php腳本:

  1. 通過bash腳本上的source命令配置環境
  2. 根據bash腳本設置的環境運行python程序(程序輸出到STDOUT)

這可以從命令行使用($ shell = tcsh):

/bin/bash -c "source /path-to-config-bash-script/config.sh; /bin/path-to-python /path-to-python-program/prog.py 2>&1"

這不是。 Python程序返回一個錯誤,指示環境設置不正確(找不到某些庫等):

<?php
....
$cmd = "/bin/bash -c \"source /path-to-config-bash-script/config.sh; /bin/path-to-python /path-to-python-program/prog.py 2>&1\"";
$ret_val = exec( $cmd, $ret_arr, $err );
?>

經過四重檢查的權限,一切看起來都很好。

謝謝!

要注意的四件事。

1-PHP不得啟用safe_mode以利用exec()

2-Shell腳本腳本需要在文件頂部聲明#!/bin/bash ,而不是傳遞給exec()

3-python腳本的腳本頂部必須有#!/usr/bin/python ,而不是嘗試通過exec()語句執行它。

4-遍歷所有到達腳本的目錄必須可讀。

所以最終應該看起來像:

$cmd = "/path-to-config-bash-script/config.sh; /path/to-python/program/prog.py 2>&1";

這樣可以解決您所有的問題。

暫無
暫無

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

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