2012-11-26 54 views
2

我想使用与PDO和PDO MySQL的SSL但接受“PHP致命错误:未定义类常量‘MYSQL_ATTR_SSL_CA’”为:接收PHP致命错误使用PDO_MYSQL当属性

$this->db = new PDO(
     "mysql:host=".$this->hostname.";dbname=".$this->database, 
     $this->username, 
     $this->password, 
     array(
      PDO::ATTR_PERSISTENT => true, 
      PDO::MYSQL_ATTR_SSL_CA => "path/to/mysql-ssl-ca-cert.pem" 
     ) 
    ); 

我已经确定使用phpinfo()安装pdo_mysql,并且在没有SSL的情况下使用代码时没有问题。我在使用PHP 5.3.6-13的Ubuntu 3.9上。我曾尝试使用其他MYSQL_ATTR_ ..并收到类似的错误。有关可能发生什么的任何想法?

+0

这将帮助您http://stackoverflow.com/questions/5808574/fatal-error-undefined-class-constant-invalid – Chella

+0

感谢您指出。我意识到这个常数在班上没有定义,应该是。我只是不清楚为什么这个记录的常量不存在,因为它似乎已经根据phpinfo()正确安装了php_mysql。 –

回答

2

在我的情况与Drush(Drupal的命令行工具,版本8.1.2)和Drupal(版本7.43)的工作,而我得到这个错误。问题是我在CLI中使用PHP7,切换到PHP5.6解决了这个问题。

+0

嗨,彼得。我正在使用WAMP和WSL,我的PHP是5.6.16,并且在Drupal 7.44站点和Druah 8.1.2上遇到同样的错误...有什么建议吗? – JohnDoea

+0

嘿,你如何应对这种转变? – podarok

+1

如果您使用的是PHP 7.0并且出现此错误,请确保您已安装'php7.0-mysql'和'php7.0-pdo'(如果在其他操作系统上使用Debian/Ubuntu不同的软件包),以及确保你重新启动你的网络服务器或PHP-FPM。 – geerlingguy