Friday, March 6, 2026

tes

 yang kedua

Fix: PDO::MYSQL_ATTR_SSL_CA Deprecated (PHP 8.5)

Error Message

Deprecated: Constant PDO::MYSQL_ATTR_SSL_CA is deprecated since 8.5,
use Pdo\\\\Mysql::ATTR_SSL_CA instead
in vendor/laravel/framework/config/database.php on line 61

Penyebab

PHP 8.5 mengganti constant PDO::MYSQL_ATTR_SSL_CA dengan Pdo\\\\Mysql::ATTR_SSL_CA. Laravel versi lama masih menggunakan constant lama di file vendor/laravel/framework/config/database.php.

Cara Fix

File yang perlu diedit

vendor/laravel/framework/config/database.php

Yang perlu diganti

Cari baris ini (biasanya ada 2 tempat — di config mysql dan mariadb):

// ❌ SEBELUM (deprecated)
'options' => extension_loaded('pdo_mysql') ? array_filter([
    PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],

Ganti dengan:

// ✅ SESUDAH (compatible PHP 8.5+)
'options' => extension_loaded('pdo_mysql') ? array_filter([
    (defined('Pdo\\\\Mysql::ATTR_SSL_CA') ? Pdo\\\\Mysql::ATTR_SSL_CA : PDO::MYSQL_ATTR_SSL_CA) => env('MYSQL_ATTR_SSL_CA'),
]) : [],

Lokasi pasti di file

Koneksi Line (kurang lebih)
mysql ~61
mariadb ~81

Penjelasan Kode Fix

defined('Pdo\\\\Mysql::ATTR_SSL_CA')
    ? Pdo\\\\Mysql::ATTR_SSL_CA    // PHP 8.5+ pakai constant baru
    : PDO::MYSQL_ATTR_SSL_CA    // PHP < 8.5 pakai constant lama

Kode ini mengecek apakah constant baru sudah ada. Jika ya, pakai yang baru. Jika tidak, fallback ke yang lama. Jadi compatible di semua versi PHP.

⚠️ Catatan Penting

  • File ini ada di folder vendor/, jadi akan ter-overwrite jika kamu jalankan composer update.
  • Jika terjadi lagi setelah composer update, ulangi langkah di atas.
  • Solusi permanen: update Laravel ke versi yang sudah support PHP 8.5 natively dengan composer update laravel/framework.

tes

 yang kedua