PHP 扩展在 CLI 中加载,但在 CGI/FastCGI 模式下不加载

PHP 扩展在 CLI 中加载,但在 CGI/FastCGI 模式下不加载

更新 2(问题已解决):

问题是编译期间参数不正确。有关详细信息,请参阅我的回答。

更新:

以下命令的结果可能会对这个问题有所启发!

# php-cgi -m
[PHP Modules]
...
PDO
pdo_sqlite
...

这里没有 pdo_mysql 扩展...为什么?php.ini 与 CLI 中用于 PHP 的相同,可加载 pdo_mysql 扩展(通过 extension_dir)

原始问题:

在 Ubuntu 12.04 上编译 PHP 5.5.1

# php -v
PHP 5.5.1 (cli) (built: Aug 22 2013 02:57:03)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies

PDO MySQL 扩展在 CLI 上加载:

# php --ri pdo_mysql

pdo_mysql

PDO Driver for MySQL => enabled
Client API version => mysqlnd 5.0.11-dev - 20120503 - $Id: 40933630edef551dfaca71298a83fad8d03d62d4 $

Directive => Local Value => Master Value
pdo_mysql.default_socket => /tmp/mysql.sock => /tmp/mysql.sock

当我使用 CGI/FastCGI 访问页面时,PDO MySQL 扩展不会加载

<?php phpinfo(); ?>
PDO
PDO support     enabled
PDO drivers     sqlite

在两种情况下,都使用相同的 extension_dir 和 php.ini 文件。

php.ini path: /usr/local/lib/php.ini
extension_dir: /usr/local/lib/php/extensions/no-debug-non-zts-20121212

extension_dir 的内容:

#ls /usr/local/lib/php/extensions/no-debug-non-zts-20121212
mcrypt.so  opcache.a  opcache.so  pdo.so  pdo_mysql.so

如何让 PHP 在 FastCGI 中运行以识别和加载 PDO MySQL 扩展?

答案1

伙计,这真是一次令人沮丧的经历……

事实证明,我所遵循的一组指示使用了一个配置参数来为旧版本的 PHP 启用 CGI(这个参数在 PHP 的生命周期中已经发生了 3 次变化),如果你查看手册,仍然不是 100% 清楚: http://php.net/manual/en/configure.about.php

我必须使用该--enable-cgi选项重新编译,不是--with-fastcgi(<4.3),也不是--enable-fastcgi(<5.3),也不是--disable-cgi(>5.3,文档提到这会启用 fastcgi,但似乎与我的情况不同)

从好的方面来说,我有借口升级到 5.5.2 :)

相关内容