更新
我在 StackOverflow 上询问了这个问题,因为当时我这里还没有得到任何答案。 以下是答案的链接为了完整性。一旦我尝试了下面 Dan C 的解决方案,我会把该页面放回这里。
原来的
不久前,我们的一个大客户转向了一家托管服务提供商,该服务提供商指定了一个可在所有实时服务器上保持一致的软件环境。
其中包括 Apache 2.2.8 和 PHP 5.1.6。
我们有一个用于开发的 ubuntu 8.04 服务器,这些版本的 Apache 和 PHP 不是默认安装的。所以我不得不从源代码编译它们。这些版本已经顺利运行了一年多。
我们正在开始构建一个新网站,并且我们想要使用需要 PDO_MySQL 的 ZendFrameword。
我尝试使用以下内容重新编译......
./configure --with-apxs2=/usr/local/apache2/bin/apxs \
--with-config-file-path=/user/local/apache2/conf/php.ini \
--with-curl=/usr/lib/ --with-mysql=shared --with-mysqli=shared \
--with-zlib --with-gd --with-jpeg-dir=/usr/local/lib/ \
--with-freetype-dir=/usr/lib/ --enable-soap --enable-pdo=shared \
--with-pdo-mysql=shared --with-sqlite=shared
...
make
...
make install
...
libtool --finish /sources/php-5.1.6/libs
一切运行正常,当我重新启动 apache 时,它会在 phpinfo() 中显示新的 ./configure。
完成此操作后,MySQL 停止工作,MYSQL 部分消失并且 msyql 停止工作。
make、make install、libtool...将 *.so 文件放入
/usr/local/lib/php/extensions/no-debug-non-zts-20050922
我之前使用的配置启用了 MySQL 但没有启用 PDO 是
./configure --with-apxs2=/usr/local/apache2/bin/apxs \
--with-config-file-path=/user/local/apache2/conf/php.ini \
--with-curl=/usr/lib/ --with-mysql --with-mysqli \
--with-zlib --with-gd --with-jpeg-dir=/usr/local/lib/ \
--with-freetype-dir=/usr/lib/ --enable-soap
我并不是一个 *nix 方面的专家,谁能告诉我我错在哪里。
谢谢
答案1
第一的:
你的--with-config-file-path
旗帜上有一个多余的“e”。
如果您的输入中也存在拼写错误configure
,那么这可能是导致您出现问题的原因。
第二:
PHP 需要知道从哪里加载扩展。
php.ini
您可以通过如下编辑来告诉它搜索您记下的目录:
extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20050922/"
值得注意的是:
反斜杠是行延续的常用符号。
如果您将命令复制/粘贴到终端,您的 shell 将安全地解释它们。