[英]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.