我正在 OSX El Capitan 和 Apache 服务器上运行最新版本的 PHP(当前为 5.6.22)。
我正在尝试使用 PostgreSQL 数据库,实际上,昨天已经工作了,但是在我用默认文件覆盖 httpd.conf 文件之后(我猜这就是问题所在),我收到了这条消息:
调用...中未定义的函数 pg_connect()
问题是我没有更改 php.ini 文件。如果我运行 phpinfo();我得到了 etc/php.ini 作为配置文件。所以我确信 Apache 选择了正确的 php.ini 文件并且加载了正确的扩展名:
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
什么可能导致此错误?我还安装了 pgAdmin 3,并且可以在创建的数据库上成功运行 SQL 查询(我昨天在我正在开发的这个网站上使用了该数据库)。
编辑:
这是当我重新启动 Apache 服务器并尝试运行该特定页面(调用 pg_connect)时在 error_log 文件中得到的内容:
[2016 年 6 月 2 日星期四 15:28:15.595496] [mpm_prefork:通知] [pid 476] AH00169:捕获 SIGTERM,正在关闭 [Thu Jun 02 15:28:16.515774 2016] [so:警告] [pid 670] AH01574:模块 php5_module 已经 已加载,正在跳过 PHP 警告:PHP 启动:无法加载动态 图书馆 '/usr/lib/php/extensions/no-debug-non-zts-20121212/php_curl.dll' - dlopen(/usr/lib/php/extensions/no-debug-non-zts-20121212/php_curl.dll, 9): 在第 0 行的未知中找不到图像 PHP 警告:PHP 启动: 无法加载动态库 '/usr/lib/php/extensions/no-debug-non-zts-20121212/php_mbstring.dll' - dlopen(/usr/lib/php/extensions/no-debug-non-zts-20121212/php_mbstring.dll, 9): 在第 0 行的未知中找不到图像 PHP 警告:PHP 启动: 无法加载动态库 '/usr/lib/php/extensions/no-debug-non-zts-20121212/php_mysqli.dll' - dlopen(/usr/lib/php/extensions/no-debug-non-zts-20121212/php_mysqli.dll, 9): 在第 0 行的未知中找不到图像 PHP 警告:PHP 启动: 无法加载动态库 '/usr/lib/php/extensions/no-debug-non-zts-20121212/php_pdo_pgsql.dll' - dlopen(/usr/lib/php/extensions/no-debug-non-zts-20121212/php_pdo_pgsql.dll, 9): 在第 0 行的未知中找不到图像 PHP 警告:PHP 启动: 无法加载动态库 '/usr/lib/php/extensions/no-debug-non-zts-20121212/php_pdo_sqlite.dll' - dlopen(/usr/lib/php/extensions/no-debug-non-zts-20121212/php_pdo_sqlite.dll, 9): 在第 0 行的未知中找不到图像 PHP 警告:PHP 启动: 无法加载动态库 '/usr/lib/php/extensions/no-debug-non-zts-20121212/php_pgsql.dll' - dlopen(/usr/lib/php/extensions/no-debug-non-zts-20121212/php_pgsql.dll, 9): 在第 0 行的未知中找不到图像 PHP 警告:PHP 启动: 无法加载动态库 '/usr/lib/php/extensions/no-debug-non-zts-20121212/php_soap.dll' - dlopen(/usr/lib/php/extensions/no-debug-non-zts-20121212/php_soap.dll, 9): 在第 0 行的未知中找不到图像 PHP 警告:PHP 启动: 无法加载动态库 '/usr/lib/php/extensions/no-debug-non-zts-20121212/php_sockets.dll' - dlopen(/usr/lib/php/extensions/no-debug-non-zts-20121212/php_sockets.dll, 9): 在第 0 行的未知中找不到图像 PHP 警告:PHP 启动: 无法加载动态库 '/usr/lib/php/extensions/no-debug-non-zts-20121212/php_sqlite3.dll' - dlopen(/usr/lib/php/extensions/no-debug-non-zts-20121212/php_sqlite3.dll, 9): 在第 0 行的未知中找不到图像 [Thu Jun 02 15:28:16.615703 2016] [mpm_prefork:通知] [pid 670] AH00163: Apache/2.4.18 (Unix) PHP/5.5.31 已配置 -- 恢复正常操作 [Thu Jun 02 15:28:16.615786 2016] [核心:通知] [pid 670] AH00094:命令行: '/usr/sbin/httpd -D FOREGROUND' [2016 年 6 月 2 日星期四 15:28:20.869683] [:error] [pid 674] [client 127.0.0.1:49594] PHP 致命错误:调用 未定义的函数 pg_connect() 中 /Library/WebServer/Documents/site/database.php 第 10 行
当您的 pgsql 扩展未安装或与当前服务器版本 (x86/x64) 不兼容时,就会发生这种情况。
检查 ext 文件夹中是否有正确的文件:
php_pgsql.so
(如果您在 Windows 上运行,则为 php_pgsql.dll
)在您的
extension=php_pdo_pgsql.dll
中搜索行 php.ini
。如果没有找到,则添加它;如果有注释,则删除逗号运行
phpinfo()
并检查扩展是否已启用如果你找到了,就可以出发了