繁体   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