如何在PHP中设置$ PATH?

时间:2010-08-23 18:19:29

标签: php environment-variables

我目前正在开发自己的小项目,但是我有一点问题:我想将$ PATH环境变量设置为./bin,这样当我使用exec()和类似函数时,它只会在该目录中搜索二进制文件(除非我明确告诉它)。

我已经尝试了putenv(),除非我启用了安全模式,否则它将无法工作,我不愿意这样做;我也尝试了apache_setenv(),但这似乎也没有用。

我可能想尝试其他任何解决方案吗?

(我使用的是带有PHP 5.3.2的Linux机器)

4 个答案:

答案 0 :(得分:6)

如果您只想在特定情况下进行设置,可以执行以下操作:

exec("PATH=/my/path ./bin");

答案 1 :(得分:4)

此处描述了在Mac OS X上更改apache使用的PATH的方法: http://lists.apple.com/archives/macos-x-server/2008/Sep/msg00433.html

如该帖子所述:

  

[A]将以下文字输入[文件   /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)的手册页   在这里使用。

     

如果您需要将PHP命令作为CLI会话运行,那么您也可以   可能需要在/opt/local/bin下添加/etc/paths.d作为新路径   工作。例如,像这样:

shell> sudo echo "/opt/local/bin" >> /etc/paths.d/macports
     

请参阅path_helper(8)的手册页。

答案 2 :(得分:2)

而不是将路径设置为bin并调用foo,为什么不直接调用bin/foo

答案 3 :(得分:0)

如果您为您的用户设置了路径,并且您的脚本是作为您的用户运行的,那么您应该做的只是为您的shell设置此路径,但是您的脚本是以ie运行的。用户可以使用apache用户(类似于debian的系统中的www-data),你应该为该用户设置此PATH