【问题标题】:Compile pdo and pdo_mysql for PHP为 PHP 编译 pdo 和 pdo_mysql
【发布时间】:2012-07-13 10:05:53
【问题描述】:

我正在尝试编译 pdo.so 和 pdo_mysql.so 以在我的 PHP5 安装中获得 pdo 支持。 我尝试了以下方法:

./configure --prefix=/thedirectory --with-mysql --with-pdo-mysql --enable-pdo

编译成功,但没有生成.so。 我应该有/指定一个 mysql 安装?

pdo 支持是否应该在 php core 中编译? 如果我运行 php -m 我可以看到 PDO 和 pdo_mysql 已注册,但 phpinfo() 声明不支持 pdo_mysql。 我猜 php -m 只是告诉我 php 支持 pdo 但仍然需要 .so?

谁能给点建议?

谢谢

【问题讨论】:

  • 您使用哪个系统? PDO 包含在最新版本中。为什么要编译它?
  • 您的 PHP CLI 二进制文件已编译 PDO 支持。您的 Web 服务器使用的 PHP 二进制文件不支持。我认为为了生成so文件,您需要configure / make / make install - configure 通常只生成一个makefile,它实际上并没有编译它......你如何运行PHP,针对哪个网络服务器? Apache/mod_php 还是 CGI/FCGI?
  • 感谢您的回答。我正在使用 redhat 4 linux,我已经获得了 5.2.17 的编译包,但是 pdo_mysql 不起作用,因为我得到“未捕获的异常 'PDOException' 和消息'找不到驱动程序'”所以我'我试图通过将 pdo.so 和 pdo_mysql.so 放在扩展文件夹中来添加支持,并修改 php.ini 以使用这些扩展。我正在尝试从 php-5.4.3 源代码编译。当然,我运行了 make & make install 并且它是成功的,但是如上所述,它不会生成 .so 我正在使用 PHP2.2 和 mod_php5.so
  • @lepolac 如果您达到PDOException,则无需担心pdo.so。如果你用的是redhat,你不能用rpm来搞定吗?
  • @DaveRandom 哦,是的,你是对的,那时 pdo 可能已启用。事实上,phpinfo 告诉我 pdo_sqlite 已启用,但 mysql 未启用。简单的 rpm 解决方案只存在于一个理想的世界中,不幸的是:'(。没有访问它的权限,无论如何我都在自定义位置构建所有这些。

标签: php pdo


【解决方案1】:

使用以下配置选项:

./configure \
--with-mysqli=/home/user/programs/mysql/install/bin/mysql_config \
--with-pdo-mysql=/home/user/programs/mysql/install

/home/user/programs/mysql/install 目录是 MySQL 的安装位置。

您应该在 phpinfo() 输出中看到 pdo_mysql 部分,显示如下:

PDO Driver for MySQL    enabled
Client API version  5.7.16 

【讨论】:

    【解决方案2】:

    最新版本的 PHP 带有适用于 MySQL、Oracle、PgSQL、ODBC、SQLite 和 Firebird/Interbase 的 PDO 驱动程序。您所要做的就是在您的php.ini 中启用它们:

    ;extension=php_pdo_firebird.dll
    extension=php_pdo_mysql.dll
    ;extension=php_pdo_oci.dll
    ;extension=php_pdo_odbc.dll
    extension=php_pdo_pgsql.dll
    ;extension=php_pdo_sqlite.dll
    

    这里我启用了 MySQL,并启用了 PgSQL,而其他所有的都禁用了。

    (这是来自 Windows 的 php.ini 文件,但在 linux 上看起来几乎相同,只是扩展名采用 pdo_mysql.sopdo_pgsql.so 等形式)

    【讨论】:

      猜你喜欢
      • 2017-06-08
      • 2015-07-15
      • 2011-10-30
      • 1970-01-01
      • 2011-09-14
      • 1970-01-01
      相关资源
      最近更新 更多