【问题标题】:Enable PDO module on CENTOS 6.9 using EasyApache4使用 EasyApache4 在 CENTOS 6.9 上启用 PDO 模块
【发布时间】:2017-12-28 05:11:43
【问题描述】:

我已经使用 EasyApache4 在 Centos 6.9 上运行的 VPS 服务器上安装了 7.1.7-1.1.1.cpanel7.0.21-1.1.1.cpanel。我有一个 laravel API 和一个 angular4 应用程序,我想在服务器上运行,但我无法让 PHP 正常运行。使用 git 安装站点后出现错误;

找不到驱动程序 (SQL: select * from site_menu_placements where active = 1)

我检查了 error_log,发现以下内容对我来说没有多大意义;

[22-Jul-2017 00:57:11 UTC] PHP Warning:  Module 'pdo_sqlite' already loaded in Unknown on line 0
[22-Jul-2017 00:57:11 UTC] PHP Warning:  PHP Startup: Unable to load dynamic library '/opt/cpanel/ea-php71/root/usr/lib64/php/modules/php_mbstring.dll' - /opt/cpanel/ea-php71/root/usr/lib64/php/modules/php_mbstring.dll: cannot open shared object file: No such file or directory in Unknown on line 0
[22-Jul-2017 00:57:35 UTC] PHP Warning:  PHP Startup: Unable to load dynamic library '/opt/cpanel/ea-php71/root/usr/lib64/php/modules/php_pdo.dll' - /opt/cpanel/ea-php71/root/usr/lib64/php/modules/php_pdo.dll: cannot open shared object file: No such file or directory in Unknown on line 0
[22-Jul-2017 00:57:35 UTC] PHP Warning:  PHP Startup: Unable to load dynamic library '/opt/cpanel/ea-php71/root/usr/lib64/php/modules/php_pdo_firebird.dll' - /opt/cpanel/ea-php71/root/usr/lib64/php/modules/php_pdo_firebird.dll: cannot open shared object file: No such file or directory in Unknown on line 0
[22-Jul-2017 00:57:35 UTC] PHP Warning:  PHP Startup: Unable to load dynamic library '/opt/cpanel/ea-php71/root/usr/lib64/php/modules/php_pdo_informix.dll' - /opt/cpanel/ea-php71/root/usr/lib64/php/modules/php_pdo_informix.dll: cannot open shared object file: No such file or directory in Unknown on line 0
[22-Jul-2017 00:57:35 UTC] PHP Warning:  PHP Startup: Unable to load dynamic library '/opt/cpanel/ea-php71/root/usr/lib64/php/modules/php_pdo_mssql.dll' - /opt/cpanel/ea-php71/root/usr/lib64/php/modules/php_pdo_mssql.dll: cannot open shared object file: No such file or directory in Unknown on line 0
[22-Jul-2017 00:57:35 UTC] PHP Warning:  PHP Startup: Unable to load dynamic library '/opt/cpanel/ea-php71/root/usr/lib64/php/modules/php_pdo_mysql.dll' - /opt/cpanel/ea-php71/root/usr/lib64/php/modules/php_pdo_mysql.dll: cannot open shared object file: No such file or directory in Unknown on line 0
[22-Jul-2017 00:57:35 UTC] PHP Warning:  PHP Startup: Unable to load dynamic library '/opt/cpanel/ea-php71/root/usr/lib64/php/modules/php_pdo_oci.dll' - /opt/cpanel/ea-php71/root/usr/lib64/php/modules/php_pdo_oci.dll: cannot open shared object file: No such file or directory in Unknown on line 0
[22-Jul-2017 00:57:35 UTC] PHP Warning:  PHP Startup: Unable to load dynamic library '/opt/cpanel/ea-php71/root/usr/lib64/php/modules/php_pdo_oci8.dll' - /opt/cpanel/ea-php71/root/usr/lib64/php/modules/php_pdo_oci8.dll: cannot open shared object file: No such file or directory in Unknown on line 0
[22-Jul-2017 00:57:35 UTC] PHP Warning:  PHP Startup: Unable to load dynamic library '/opt/cpanel/ea-php71/root/usr/lib64/php/modules/php_pdo_odbc.dll' - /opt/cpanel/ea-php71/root/usr/lib64/php/modules/php_pdo_odbc.dll: cannot open shared object file: No such file or directory in Unknown on line 0
[22-Jul-2017 00:57:35 UTC] PHP Warning:  PHP Startup: Unable to load dynamic library '/opt/cpanel/ea-php71/root/usr/lib64/php/modules/php_pdo_pgsql.dll' - /opt/cpanel/ea-php71/root/usr/lib64/php/modules/php_pdo_pgsql.dll: cannot open shared object file: No such file or directory in Unknown on line 0
[22-Jul-2017 00:57:35 UTC] PHP Warning:  PHP Startup: Unable to load dynamic library '/opt/cpanel/ea-php71/root/usr/lib64/php/modules/php_pdo_sqlite.dll' - /opt/cpanel/ea-php71/root/usr/lib64/php/modules/php_pdo_sqlite.dll: cannot open shared object file: No such file or directory in Unknown on line 0
[22-Jul-2017 00:57:35 UTC] PHP Warning:  Module 'PDO' already loaded in Unknown on line 0
[22-Jul-2017 00:57:35 UTC] PHP Warning:  PHP Startup: Unable to load dynamic library '/opt/cpanel/ea-php71/root/usr/lib64/php/modules/pdo_mysql.so' - /opt/cpanel/ea-php71/root/usr/lib64/php/modules/pdo_mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0
[22-Jul-2017 00:57:35 UTC] PHP Warning:  Module 'pdo_sqlite' already loaded in Unknown on line 0
[22-Jul-2017 00:57:35 UTC] PHP Warning:  PHP Startup: Unable to load dynamic library '/opt/cpanel/ea-php71/root/usr/lib64/php/modules/php_mbstring.dll' - /opt/cpanel/ea-php71/root/usr/lib64/php/modules/php_mbstring.dll: cannot open shared object file: No such file or directory in Unknown on line 0

我认为该错误对应于 php_pdo_mysql.dll 未正常运行。我检查了 phpinfo() 并看到主 php.ini 文件位于 /opt/cpanel/ea-php71/root/etc 我试图在此文件中加载 PDO 模块,但即使我有也没有效果;

extension=pdo.so
extension=pdo_mysql.so
extension=pdo_sqlite.so
extension=mysql.so

当我查看 phpinfo() 页面时,我可以看到有一个名为“PDO”的部分,但在此部分中,我只看到 PDO 驱动程序行中的 sqlite。我相信我也应该看到mysql。

当我通过 ssh 运行 php artisan migrate 时,出现以下错误;

[Doctrine\DBAL\Driver\PDOException] 找不到驱动程序

[PDOException] 找不到驱动程序

我认为应该包含 pdo mysql 驱动程序的包是ea-php71-php-pdo-7.1.7-1.1.6.cpanel.x86_64 我使用rpm -ql ea-php71-php-pdo-7.1.7-1.1.6.cpanel.x86_64 找出它的安装位置,我得到以下信息;

/opt/cpanel/ea-php71/root/etc/php.d/20-pdo.ini
/opt/cpanel/ea-php71/root/etc/php.d/20-sqlite3.ini
/opt/cpanel/ea-php71/root/etc/php.d/30-pdo_sqlite.ini
/opt/cpanel/ea-php71/root/usr/lib64/php/modules/pdo.so
/opt/cpanel/ea-php71/root/usr/lib64/php/modules/pdo_sqlite.so
/opt/cpanel/ea-php71/root/usr/lib64/php/modules/sqlite3.so

所以 pdo_mysql 丢失了。

【问题讨论】:

  • 关于*.dll文件的错误,我认为在linux机器上需要加载的文件是*.so文件,*.dll文件只适用于windows,你可以忽略它。修改配置后重启apache服务了吗?
  • 在 WHM 中,我在使用 MultiPHP INI 编辑器编辑后单击 Restart Services > HTTP Server (Apache)。我认为这会影响所有帐户?我无法编辑文件/opt/cpanel/ea-php71/root/etc。它是只读的
  • 哦,刚刚在您的错误日志[22-Jul-2017 00:57:35 UTC] PHP Warning: PHP Startup: Unable to load dynamic library '/opt/cpanel/ea-php71/root/usr/lib64/php/modules/pdo_mysql.so' shared object file: No such file or directory in Unknown on line 0 上看到这一行,看来pdo_mysql 仍未安装。您应该在 EasyApache 上启用 php 扩展。可能这个链接可以帮助:documentation.cpanel.net/display/EA4/…
  • 我看到包 ea-php71-php-pdo-7.1.7-1.1.6.cpanel.x86_64 已经安装并且是最新版本
  • 我看到 /opt/cpanel/ea-php71/root/usr/lib64/php/modules 中没有 mysql 的模块,所以它丢失了。它是否安装在其他地方?

标签: php mysql laravel pdo centos6


【解决方案1】:

按照说明进行操作:

第一步:在命令行运行pecl install pdo

第 2 步: 如果已经安装,只需编辑 /etc/php.ini

第 3 步:添加以下行

; Extension PDO
extension=pdo.so

第二种方式:

先安装php-mysql

sudo apt-get install php7.0-mysql

然后启用模块

sudo phpenmod pdo_mysql

然后重启apache

sudo service apache2 restart 

希望它会有所帮助。

【讨论】:

  • 这最终失败了。我在最底部得到这个错误; /root/tmp/pear/PDO/pdo_dbh.c: In function ‘pdo_dbh_new’: /root/tmp/pear/PDO/pdo_dbh.c:1413: error: ‘zend_class_entry’ has no member named ‘default_properties’ make: *** [pdo_dbh.lo] Error 1
猜你喜欢
  • 2018-03-28
  • 2019-09-19
  • 1970-01-01
  • 2020-08-10
  • 2020-11-24
  • 2019-05-15
  • 1970-01-01
  • 2018-06-09
  • 1970-01-01
相关资源
最近更新 更多