Saya baru saja memutakhirkan ke PHP 7 hanya untuk menemukan bahwa WordPress 4.8.1 (versi terbaru) masih menggunakan mysql_connect di modul wp-db.php, tetapi mysql_connect telah ditinggalkan.
Kode berikut diambil dari wp-db-php, baris 1567-1571:
if ( WP_DEBUG ) {
$this->dbh = mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags );
} else {
$this->dbh = @mysql_connect( $this->dbhost, $this->dbuser, $this>dbpassword,
$new_link, $client_flags);
}
Ini adalah output ketika saya mencoba menjalankan program saya:
Kesalahan fatal: Kesalahan Tidak Tertangkap: Panggil ke fungsi mysql_connect () yang tidak terdefinisi di D: \ ApacheHtdocs \ ConneXions \ wp-include \ wp-db.php: 1570
Jejak tumpukan:
# 0 D: \ ApacheHtdocs \ ConneXions \ wp-include \ wp- termasuk \ wp- db.php (658): wpdb-> db_connect ()
# 1 D: \ ApacheHtdocs \ ConneXions \ wp-include \ load.php (404): wpdb -> __ construct ('root', '', 'connexions', ' localhost ')
# 2 D: \ ApacheHtdocs \ ConneXions \ wp-settings.php (106): require_wp_db ()
# 3 D: \ ApacheHtdocs \ ConneXions \ wp-config.php (104): require_once (' D: \ ApacheHtdocs. .. ')
# 4 D: \ ApacheHtdocs \ ConneXions \ wp-load.php (37): require_once (' D: \ ApacheHtdocs ... ')
# 5 D: \ ApacheHtdocs \ ConneXions \ wp-blog-header.php (13): require_once ('D: \ ApacheHtdocs ...')
# 6 D: \ ApacheHtdocs \ ConneXions \ index.php (17): memerlukan ('D: \ ApacheHtdocs ...')
# 7 {main} dilemparkan ke D: \ ApacheHtdocs \ ConneXions \ wp-termasuk \ wp-db. php on line 1570
Saya tidak percaya bahwa WordPress mengatakan merekomendasikan PHP 7, tetapi tidak berhasil. Apa yang kulewatkan di sini?
mysql_connect
hanya digunakan sebagai cadangan jikamysqli
tidak terdeteksi. Tampaknya Anda belum menginstalmysqli
ataumysql
menginstalnya (mysqli
disarankan,mysql
sudah tidak digunakan lagi)Jawaban:
Sepertinya Anda tidak menginstal mysqli dan / atau mengaktifkan server Anda. IIRC
mysqli
ditambahkan ke php dalam versi 5.5, danmysql
ekstensi yang lebih lama telah ditinggalkan dan sepenuhnya pensiun sejak saat itu. Jika Anda memutakhirkan dari versi PHP yang sangat lama, mungkin Anda masih memerlukan langkah tambahan untuk mengaktifkannyamysqli
.(Wordpress memeriksa keberadaan
mysqli
dan hanya jika tidak ada, cobamysql
fungsi yang lebih lama .)sumber
Selain jawaban @MarkKaplun, saya memposting beberapa kode dari kelas wpdb:
Begini caranya
wpdb::use_mysqli
ditentukan:Ini diresmikan dengan:
dan kemudian di
wpdb
konstruktor yang kita miliki:sumber
Apa yang harus Anda lakukan untuk mengatasi masalah ini, adalah mengedit file php.ini Anda.
jalankan di mana
php.ini
saya menemukan milik saya di:/etc/php/php.ini
(walaupun saya tidak tahu OS apa yang Anda jalankan dengan mudah, temukan milik Anda)Cari dua file ini:
dan menghapus komentar mereka. Voila, itu akan menyelesaikan pekerjaan kapan saja.
Bacaan lebih lanjut: https://wiki.archlinux.org/index.php/PHP
sumber
Apakah Anda menggunakan Xamppp 7.x untuk Windows?
Itu terjadi pada saya ketika saya memutakhirkan Xampp 5.6 saya ke Xampp 7.1. Memeriksa file konfigurasi C: \ Xampp \ php \ php.ini , saya melihat banyak kesalahan yang melibatkan nama ekstensi PHP (mereka tidak memiliki awalan php_ dan akhiran .dll). Salah satunya terkait dengan mysqli.
Pengaturan yang salah saya temukan di sana:
Pengaturan yang tepat (setelah mengedit baris ini):
Mengoreksi itu memecahkan masalah saya.
Omong-omong: jangan lupa untuk memperbaiki semua pengaturan yang salah lainnya (nama ekstensi yang benar dapat dilihat di C: \ xampp \ php \ ext).
sumber