php运行环境和python运行环境_PHP的exec():运行bash脚本来配置环境,然后执行Python程序...

Shell is tcsh. PHP v5.1.6. Redhat 5.7. Safe_mode is OFF.

Running php script from the browser using exec to:

configure environment via source command on bash script

run a python program relying on the environment set up by the bash script (program outputs to STDOUT)

This works from the command line ($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"

This does not. Python program returns an error indicating that the environment is not set up correctly (can't find certain libraries, etc.):

....

$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 );

?>

Quadruple-checked permissions and everything looks OK.

Thanks!

解决方案

Four things to note.

1 - PHP must not have safe_mode on to leverage exec()

2 - The shell script script needs to have #!/bin/bashto be declared at the top of the file rather than being passed into the exec()

3 - The python script must have #!/usr/bin/python at the top of the script rather than attempting to execute it through the exec() statement.

4 - All directories that are traversed to get to the script must be readable.

So the final should look like:

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

This should resolve all your issues.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值