我需要从源代码构建 PHP 才能使用此客户 ODBC 驱动程序。我已遵循以下检查:https://www.progress.com/tutorials/odbc/using-php当我用手动启动 apache 时,一切(包括 ODBC 驱动程序)都正常工作,/usr/local/apache2/bin/apachectl start
但是当我尝试用 systemd 启动 apache 时,ODBC 驱动程序不再起作用。
我已经创建了这个文件:/usr/lib/systemd/system/httpd.service
[Unit]
Description=Apache Web Server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/apache2/logs/httpd.pid
ExecStart=/usr/local/apache2/bin/apachectl start
ExecStop=/usr/local/apache2/bin/apachectl graceful-stop
ExecReload=/usr/local/apache2/bin/apachectl graceful
PrivateTmp=true
LimitNOFILE=infinity
[Install]
WantedBy=multi-user.target
当我使用 systemd 启动 apache 时,我的 php 文件中出现以下错误:
odbc_connect(): SQL error: [DataDirect][ODBC lib] Driver Manager Message file not found. Please check for the value of InstallDir in your odbc.ini., SQL state IM002 in SQLConnect
我的 odbc.ini 文件中的 InstallDir 设置正确:
手动启动 Apache 时我没有收到此错误apachectl start
。有什么建议可以解决此问题吗?
答案1
我可以通过在/usr/lib/systemd/system/httpd.service
文件的[Service]
部分下添加以下几行来解决我的问题:
Environment="ODBCINST=/opt/Progress/DataDirect/Hybrid_Data_Pipeline_for_ODBC/odbcinst.ini" Environment="ODBC_HOME=/opt/Progress/DataDirect/Hybrid_Data_Pipeline_for_ODBC" Environment="ODBCINI=/opt/Progress/DataDirect/Hybrid_Data_Pipeline_for_ODBC/odbc.ini" Environment="TZ=America/Los_Angeles"