3

我最初在 ServerFault 上问了这个问题,但没有得到任何回应,我认为它与编程有关,所以,这里...


不久前,我们的一个大客户转移到了一个托管服务提供商,该提供商指定了一个软件环境,该环境在所有实时服务器上都是一致的。

其中包括 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 人,谁能告诉我哪里出错了。

谢谢

4

2 回答 2

3

我不确定它是否真的有帮助,但是如果您删除=shared配置行中的每个“”实例怎么办?

例如,这是我前一段时间使用过的配置命令 *(由phpinfo给出)*:

$ /usr/local/php-5.1.6/bin/php -i | grep 'configure'
Configure Command =>  './configure' '--prefix=/usr/local/php-5.1.6' '--with-config-file-path=/etc/php-5.1.6' 
  '--with-apxs2=/usr/bin/apxs2' '--disable-ipv6' '--with-openssl' '--with-zlib' '--enable-bcmath' 
  '--with-bz2' '--with-curl' '--enable-exif' '--enable-ftp' '--with-gd' '--with-ttf' 
  '--enable-gd-native-ttf' '--with-imap-ssl' '--with-ldap' '--enable-mbstring' '--with-mcrypt' 
  '--with-mhash' '--with-mysql' '--with-mysqli' '--enable-pcntl' '--with-pdo-mysql' '--with-pdo-sqlite' 
  '--enable-shmop' '--enable-soap' '--enable-sockets' '--enable-sqlite-utf8' '--with-xmlrpc' 
  '--with-xsl' '--with-pear'

(为了可读性添加了换行符)

它有帮助吗?

于 2009-07-22T10:48:15.550 回答
-1

无需重新编译整个 PHP。只需单独编译 PDO_MYSQL 模块。用于pecl安装它:

pecl install PDO_MYSQL

为此,您将需要phpize安装。在 Debian 机器上,它由名为php5-dev. 之后只需将其添加到您的php.ini并重新启动 Apache。

如果您在 Debian/Ubuntu 系统上,则 PDO_MYSQL 在名为的包中提供php5-mysql

于 2009-07-22T11:05:51.973 回答