我有一个 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/