[英]PHP exec(): Running bash script to configure environment then executing Python program
外殼是tcsh。 PHP v5.1.6。 紅帽5.7。 安全模式為OFF。
使用exec從瀏覽器運行php腳本:
這可以從命令行使用($ 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.