我需要在我的Mac上设置一个环境变量,这样当Apache运行时,PHP / PDO加载pdo_informix驱动程序时,它就知道Informix Home目录的位置。我真的厌倦了一切!
在 / usr / sbin / envvars 中我添加了:导出INFORMIXDIR = / Applications / IBM / informix
在 /System/Library/LaunchDaemons/org.apache.httpd.plist 中插入:
<key>EnvironmentVariables</key>
<dict>
<key>INFORMIXDIR</key>
<string>/Applications/IBM/informix</string>
</dict>
我尝试过: launchctl setenv INFORMIXDIR / Applications / IBM / informix
一切都无济于事。
我在 apache 全局配置中添加了 PassEnv 行。但是当我重新开始服务时,我看到了:
root 589 ->apachectl restart
[Mon Aug 05 13:35:16 2013] [warn] PassEnv variable INFORMIXDIR was undefined
当我运行我的测试.php页面时,驱动程序加载但是抱怨,因为它无法确定数据库区域设置。错误讯息:
[Mon Aug 05 12:56:23 2013] [error] [client ::1] PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE=HY000, SQLDriverConnect: -23101 [Informix][Informix ODBC Driver][Informix]Unspecified System Error = -23101.' ...
谁能告诉我我错过了什么?
答案 0 :(得分:2)
我希望没有人浪费时间看这个问题。我被一位在 / etc / bashrc 中为 apachectl 设置别名的前任所感染了!
事实证明我没有执行 / usr / sbin / apachectl ,而是 / opt / local / apache2 / bin / apachectl
此脚本导入 / opt / local / apache2 / bin / envvars ,而不是 / usr / sbin / envvars 。它也没有使用 launchctl ...解释了为什么我的设置环境的步骤都没有用。一旦发现,我就可以直接使用它。
很抱歉打扰了你们所有人。