php - 使用 shell_exec() 运行 shell 脚本时,putenv() 设置的环境变量不存在 | PHP

标签 php linux bash shell

我有一个 PHP 脚本,我在其中使用 putenv() 设置了一个环境变量,然后我在这个 PHP 脚本中使用 shell_exec() 调用了一个 shell 脚本. 在 shell 脚本中,我正在尝试使用该环境变量。

我的 PHP 脚本是这样的:

<?php
...
...
putenv("USERHOME=/home/user/mnt");
...
...
shell_exec("sudo ./script.sh arg1 arg2");
...
...
?>

我的 shell 脚本是这样的:

#!/bin/sh
...
...
echo "USER HOME=" $USERHOME
...
<---Another use of $USERHOME----->
...
exit $?

我的应用程序使用 Xampp,PHP 版本是 5.3.8。

以前它在 fedora core 3 上运行良好。 但最近我将我的应用程序移至 CentOS 7,但现在它无法正常工作。 在 CentOS 7 上,我得到 USERHOME 变量的 NULL 值。

最佳答案

在 PHP < 5.4 中,有一个 safe_mode 指令限制了您可以使用 putenv 编写的环境变量。编辑您的 php.ini 文件并从 safe_mode_protected_env_vars 设置中删除 USERHOME

http://php.net/manual/en/ini.sect.safe-mode.php#ini.safe-mode-protected-env-vars

关于php - 使用 shell_exec() 运行 shell 脚本时,putenv() 设置的环境变量不存在 | PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46214380/

相关文章:

php - Jquery和Cakephp,文件放在哪里/如何调用?

php - 将多维数组对象映射到类中的变量

bash - 用jq添加json数组元素(命令行)

php - Oracle select,如何在PHP中访问 'where exists'子查询中的值?

php - 按日期从数据库回显的结账订购日志

linux - 我想知道 snort 如何处理数据包的完整流程?

python - 如何将 .pcm 文件转换为 .wav 文件(脚本)

linux - Perl:杀死任何 child 的整棵树

regex - Bash 计算字符串中的字母,输出总是有点不同

linux - 使用电子表格中的数据标记音频文件