【问题标题】:php fatal error: Undefined class content drushphp 致命错误:未定义的类内容 drush
【发布时间】:2017-02-06 01:06:06
【问题描述】:

当我在网站文件夹中询问 drush 状态时,我收到此消息

/volume1/web/drupal8 $ drush 状态

PHP 致命错误:未定义的类常量 'MYSQL_ATTR_SSL_CA' 在 phar:///usr/local/bin/drush/lib/Drush/Sql/Sqlmysql.php 在第 56 行

致命错误:未定义的类常量“MYSQL_ATTR_SSL_CA”在 phar:///usr/local/bin/drush/lib/Drush/Sql/Sqlmysql.php 在第 56 行 由于不可恢复的错误,Drush 命令异常终止。
[错误] 错误:未定义的类常量 'MYSQL_ATTR_SSL_CA' 在 phar:///usr/local/bin/drush/lib/Drush/Sql/Sqlmysql.php,第 56 行

当我在 bin 文件夹中询问 drush 状态时,drush 似乎工作

/bin$ drush status PHP 配置:/etc/php/php.ini PHP OS : Linux Drush 脚本 : /usr/local/bin/drush Drush 版本:8.1.5 Drush 临时目录:/tmp Drush 配置:Drush 别名文件:

我不知道我做错了什么,如何在文件夹 /volume1/web/drupal8 上运行 drush?

提前致谢

PDO 已安装并启用。我跑php56 -i

PDO PDO 支持 => 启用 PDO 驱动程序 => dblib、mysql、pgsql、sqlite

pdo_dblib

用于 FreeTDS/Sybase DB-lib 的 PDO 驱动程序 => 启用 Flavor => freetds

pdo_mysql

用于 MySQL 的 PDO 驱动程序 => 启用客户端 API 版本 => mysqlnd 5.0.11-dev - 20120503 - $Id: 76b08b24596e12d4553bd 41fc93cccd5bac2fe7a $

指令 => 本地值 => 主值 pdo_mysql.default_socket => /run/mysqld/mysqld.sock => /run/mysqld/mysqld.sock

pdo_pgsql

用于 PostgreSQL 的 PDO 驱动程序 => 启用 PostgreSQL(libpq) 版本 => 9.3.6 模块版本 => 1.0.2 修订版 => $Id: 0e858dd2051ca8c2fd3c781909a0670ab5fecd36 $ pdo_sqlite

用于 SQLite 3.x 的 PDO 驱动程序 => 启用 SQLite 库 => 3.10.2

【问题讨论】:

  • 您是否正确安装了 PDO?
  • pdo 安装了吗?运行php -m进行检查。
  • 是的 PDO 已安装
  • 我跑$ php56 -m [PHP Modules] apc apcu bcmath bz2 calendar Core ctype curl date dba dom ereg exif fileinfo filter ftp gd gettext gmp hash iconv imap intl json libxml mbstring mcrypt mhash mysql mysqli mysqlnd openssl pcntl pcre PDO pdo_dblib pdo_mysql pdo_pgsql pdo_sqlite pgsql Phar posix readline Reflection session shmop SimpleXML soap sockets SPL sqlite3 standard sysvmsg sysvsem sysvshm tokenizer wddx xml xmlreader xmlrpc xmlwriter Zend OPcache zip zlib [Zend Modules] Zend OPcache
  • @Robert 我怎么知道它已正确安装?

标签: php linux drupal-8 drush


【解决方案1】:

您可能没有正确安装PDO_MYSQL。您需要调用phpinfo() 函数并查看该模块是否存在。常量MYSQL_ATTR_SSL_CA 来自 PDO 库。如果 php 是从 CLI 调用的,那么它可能有自己的php.ini,因此您还需要在那里启用 PDO。

要检查您是否在 PHP CLI 中启用了 PDO,请运行 php -m |grep PDO,该命令应返回 PDO 字符串。

要安装 PDO,请检查 PHP Manual for Installing PDO

【讨论】:

  • 我跑/volume1/web/drupal8$ php56 -m | grep PDO PDO
  • 我在我的问题中发布了 de PDO,PDO 已启用。
  • 尝试制作通过pdo连接mysql的简单脚本,然后将其更改为通过SSL连接,看看是否有效
  • 我检查了权限ls -la /volume1/@appstore 并创建了符号链接ln -s /usr/local/bin/composer /volume1/@appstore/composer ln -s /usr/local/bin/drush /volume1/@appstore/drush
  • 我还有一个问题现在在这里描述,请你看看stackoverflow.com/questions/39748604/…
【解决方案2】:

我在所有 drupal 7 和 8 目录上也遇到了这个问题,虽然 drush 在 drupal 之外工作正常,但在 Drupal 目录中不起作用。错误说:

Error: Undefined class constant 'MYSQL_ATTR_SSL_CA' in Drush\Sql\Sqlmysql->creds() (line 56 of phar:///usr/local/bin/drush/lib/Drush/Sql/Sqlmysql.php).

安装 php-mysql(或 php5-mysql)解决了这个问题。

【讨论】:

猜你喜欢
  • 2014-12-01
  • 2012-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-11
  • 2015-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多