当我尝试安装Laravel 5.8时,它会抛出错误
Undefined class constant ‘MysqL_ATTR_SSL_CA’
在此之后,我试图在服务器上运行该应用程序.它有时很好.有时它会抛出同样的错误.我也无法在Artisan上运行任何命令.为什么会这样,以及如何解决这个问题?
解决方法
新的Laravel版本有这个错误.查看config / database.PHP,您将看到如下内容:
'MysqL' => [ 'driver' => 'MysqL','host' => env('DB_HOST','127.0.0.1'),'port' => env('DB_PORT','3306'),'database' => env('DB_DATABASE','forge'),'username' => env('DB_USERNAME','password' => env('DB_PASSWORD',''),'unix_socket' => env('DB_SOCKET','charset' => 'utf8mb4','collation' => 'utf8mb4_unicode_ci','prefix' => '','prefix_indexes' => true,'strict' => true,'engine' => null,'options' => array_filter([ PDO::MysqL_ATTR_SSL_CA => env('MysqL_ATTR_SSL_CA'),]),
安全应用程序有一个环境文件,其中包含特定机器和软件配置的数据,如数据库名称和密码,电子邮件和密码,用于判断它是用于开发还是生产的值等.
Laravel通过全局函数env()将它们加载到常量可访问中.
有一个文件.env包含Laravel中的那些特殊值.所以打开它,在数据库部分的底部,添加您的证书路径值:
DB_CONNECTION=MysqL DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=blog-db DB_USERNAME=root DB_PASSWORD=fakepass MysqL_ATTR_SSL_CA=relative/or/absolute/path/to/certificate.extension
或者,如果您不打算像我们大多数人那样使用SSL证书进行MysqL连接,那么只需在config / database.PHP中注释:
'MysqL' => [ 'driver' => 'MysqL',//'options' => array_filter([ // PDO::MysqL_ATTR_SSL_CA => env('MysqL_ATTR_SSL_CA'),//]),
就像目前在Laravel / Laravel大师:https://github.com/laravel/laravel/blob/master/config/database.php