【问题标题】:PDO Not Found - Centos7 PHP7.1PDO 未找到 - Centos7 PHP7.1
【发布时间】:2018-07-22 21:51:34
【问题描述】:

我是服务器新手,所以请暴露我的愚蠢。

这更像是服务器问题(我认为)而不是 Laravel 问题,但我的网站基于 Laravel5.4,所以仅供参考。

我目前正在使用 Google Cloud Platform 来设置一个看起来和其他虚拟机一样工作的虚拟机。

当前安装:

  • Centos 7
  • mariadb
  • Apache/2.4.6 (CentOS)
  • php71

所以我把我的网站文件夹放到/var/www/html/mywebsitefolder

我设置了 mysql 数据库并为数据库设置配置了我的网站配置,并尝试在此时运行 php71 artisan migrate。它会引发以下错误:

PHP 致命错误:在中找不到类“PDO” /var/www/html/soyegg/vendor/laravel/framework/src/Illuminate/Database/Co nnection.php 在第 1200 行 Connection.php 第 1200 行: 找不到类“PDO”

我研究并说需要安装php-pdo,所以我在cli中运行了以下行:

yum install php-pdo
yum install php-pdo_mysql

但是错误仍然存​​在。

然后我进一步研究并说我需要在php.ini 中明确声明扩展才能使用它们。但是当我检查我的php.ini 的 php71 时,它不涉及任何类似于以下内容的行,其他人说他们应该添加到php.ini

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

我是菜鸟,所以我猜 php71 不会像这样播放扩展名?但我还是在 php.ini 某处添加了它,它涉及扩展。

然后抛出更多错误。

请告诉我发生了什么事。

编辑: 感谢 Daniel,在运行 yum install php-mysqlnd 后显示以下错误:

> Loaded plugins: fastestmirror Loading mirror speeds from cached
> hostfile  * base: mirror.team-cymru.com  * epel: mirror.steadfast.net 
> * extras: mirror.team-cymru.com  * remi-safe: mirror.team-cymru.com  * updates: mirror.genesisadaptive.com Resolving Dependencies
> --> Running transaction check
> ---> Package php-mysqlnd.x86_64 0:5.4.16-45.el7 will be installed
> --> Processing Conflict: php-mysql-5.4.16-45.el7.x86_64 conflicts php-mysqlnd
> --> Finished Dependency Resolution Error: php-mysql conflicts with php-mysqlnd-5.4.16-45.el7.x86_64  You could try using --skip-broken to
> work around the problem
> ** Found 12 pre-existing rpmdb problem(s), 'yum check' output follows: 1:NetworkManager-1.10.2-14.el7_5.x86_64 has missing requires of
> NetworkManager-libnm(x86-64) = ('1', '1.10.2', '14. el7_5')
> 1:NetworkManager-1.10.2-16.el7_5.x86_64 is a duplicate with
> 1:NetworkManager-1.10.2-14.el7_5.x86_64
> binutils-2.27-28.base.el7_5.1.x86_64 is a duplicate with
> binutils-2.27-27.base.el7.x86_64 gnupg2-2.0.22-5.el7_5.x86_64 is a
> duplicate with gnupg2-2.0.22-4.el7.x86_64
> google-cloud-sdk-207.0.0-1.el7.noarch is a duplicate with
> google-cloud-sdk-204.0.0-1.el7.noarch
> google-cloud-sdk-208.0.1-1.el7.noarch is a duplicate with
> google-cloud-sdk-207.0.0-1.el7.noarch
> google-cloud-sdk-208.0.2-1.el7.noarch is a duplicate with
> google-cloud-sdk-208.0.1-1.el7.noarch
> google-cloud-sdk-209.0.0-1.el7.noarch is a duplicate with
> google-cloud-sdk-208.0.2-1.el7.noarch httpd-2.4.6-80.el7.centos.x86_64
> has missing requires of httpd-tools = ('0', '2.4.6', '80.el7.centos')
> httpd-2.4.6-80.el7.centos.1.x86_64 is a duplicate with
> httpd-2.4.6-80.el7.centos.x86_64
> selinux-policy-targeted-3.13.1-192.el7_5.3.noarch has missing requires
> of selinux-policy = ('0', '3.13.1', '192.el7
> _5.3') selinux-policy-targeted-3.13.1-192.el7_5.4.noarch is a duplicate with selinux-policy-targeted-3.13.1-192.el7_5.3.no arch

【问题讨论】:

    标签: php laravel pdo server centos


    【解决方案1】:

    试试下面的命令:

    yum install php71w-mysqlnd
    

    如果通过该命令执行安装,则会自动添加到php.ini配置文件中。

    【讨论】:

      【解决方案2】:

      MariaDB 是 MySQL 的一个分支,因此通过运行安装 PHP 7.1 版本的 MySQL PDO 驱动程序

      yum install php7.1-mysql
      

      这应该会自动将其添加到加载的配置php.ini 文件中。

      【讨论】:

      • 上面写着No package php7.1-mysql available.
      • 哦,我想我安装了php-mysql.x86_64,因为我检查了yum list installed | grep mysql
      • 试试yum install php-mysqlnd
      • 所以你的问题是你安装了 php-mysqlnd,但是对于 PHP 5.4 版(php-mysqlnd-5.4.16-45.el7.x86_64) - 但是你使用 PHP 7.1 版。尝试使用yum remove 删除旧包。然后您应该能够添加新的
      • 我可以说我需要先运行yum remove php-mysql.x86_64,然后运行yum install php-mysqlnd吗?
      猜你喜欢
      • 2013-03-05
      • 2018-03-02
      • 1970-01-01
      • 2019-05-20
      • 2016-11-06
      • 1970-01-01
      • 2017-01-21
      • 2013-11-11
      相关资源
      最近更新 更多