我目前正在开发自己的小项目,但我遇到了一些小问题:我想将$ PATH环境变量设置为./bin
,这样当我使用exec()
和类似的函数时,它只会搜索那个二进制文件目录(除非我明确告诉它)。
我已经试过putenv()
,除非我启用了安全模式,否则我不会工作,我不想这样做;我也试过apache_setenv()
,但那似乎也不奏效。
我还想尝试其他解决方案吗?
(我使用的是Linux机器用PHP 5.3.2)
我目前正在开发自己的小项目,但我遇到了一些小问题:我想将$ PATH环境变量设置为./bin
,这样当我使用exec()
和类似的函数时,它只会搜索那个二进制文件目录(除非我明确告诉它)。
我已经试过putenv()
,除非我启用了安全模式,否则我不会工作,我不想这样做;我也试过apache_setenv()
,但那似乎也不奏效。
我还想尝试其他解决方案吗?
(我使用的是Linux机器用PHP 5.3.2)
而不是路径设置为bin
并调用foo
,你为什么不只是明确援引bin/foo
?
如果您为您的用户设置了路径,并且您的脚本以您的用户身份运行,则唯一需要做的是为您的shell设置此路径,但是您的脚本以ie运行。 apache用户(www数据中的debian-like系统),这个工作,如果你想设置仅在特定情况下,你应该设置此路径为用户explicte
以改变在Mac OS X Apache使用该路径的方式在此描述: http://lists.apple.com/archives/macos-x-server/2008/Sep/msg00433.html
如该交指出:
[A] DD以下文本[在F ILE
/System/Library/LaunchDaemons/org.apache.httpd.plist
]在第五 行:<key>EnvironmentVariables</key> <dict> <key>PATH</key> <string>/usr/bin:/bin:/usr/sbin:/sbin:/opt/local/bin</ string> </dict>
使用此处查看
launchd.plist(5)
的手册页语法的详细信息,我 。如果你需要为CLI会话中运行你的PHP命令,你也可能 需要添加
/opt/local/bin
作为一种新的路径下/etc/paths.d
工作。例如,如下所示:shell> sudo echo "/opt/local/bin" >> /etc/paths.d/macports
请参见
path_helper(8)
的手册页。
您的意思是“除非我禁用了安全模式”? – greg0ire 2010-08-23 18:25:55
@ greg0ire,不,它实际上不会工作,除非我已启用安全模式。在手册页上查看:http://php.net/manual/en/function.putenv.php – Frxstrem 2010-08-23 18:29:17
“这些指令只有在启用安全模式时才有效!”从http://php.net/manual/en/function.putenv.php。这很愚蠢。 – muhmuhten 2010-08-23 18:30:06