我的OS X Mavericks上的本地开发站点使用exec("which php")-命令。这个exec()-命令的结果是"/usr/bin.php",这实际上是错误的,它应该返回"opt/local/php5/bin.php"。"opt/local/php5/bin.php"是我的终端会话中命令"which php"的结果。我该怎么解决这个问题?
如果你问错了问题,就会得到错误的结果。)
which
命令返回可执行文件的完整路径。which
查找命令的位置是在$PATH
环境变量中定义的,它看起来像这样:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/android-sdk/sdk/platform-tools:/opt/android-sdk/sdk/tools
这些是常用的命令路径,用冒号分隔。
显然,您的机器上安装了多个PHP。您得到的是主路径,可能是由您的数据包管理器安装的。
只有当您将/opt/local/php5/bin
添加到Web服务器用户的环境中时,才能找到/opt
中的一个,并且它必须在/usr/bin
之前。
现在,如何设置Web服务器的$PATH
?根据您的服务器(Apache、Nginx…)和您的发行版,有不同的可能性。对于类似Debian系统上的Apache,它通常是/etc/apache2/envvars
。
如果还没有定义PATH
,只需添加以下行:
export PATH="/opt/local/php5/bin:$PATH"
(请注意,开头的PATH
没有$
符号。)
然后重新启动您的Web服务器。