Peringatan PHP: Startup PHP: Tidak dapat memuat pustaka dinamis

95

Saya menjalankan skrip PHP dan mendapatkan kesalahan ini:

Peringatan PHP: Startup PHP: Tidak dapat memuat pustaka dinamis '/usr/local/lib/php/extensions/no-debug-non-zts-20090626/ixed.5.2.lin' - / usr / local / lib / php / extensions /no-debug-non-zts-20090626/ixed.5.2.lin: tidak dapat membuka file objek bersama: Tidak ada file atau direktori seperti itu di Tidak Diketahui pada baris 0

Apa artinya?

Popolo
sumber

Jawaban:

56

Artinya ada baris extension=...atau zend_extension=...di salah satu file konfigurasi php Anda (php.ini, atau yang lain yang dekat dengannya) yang mencoba memuat ekstensi itu:ixed.5.2.lin

Sayangnya file atau jalur tersebut tidak ada atau perizinannya salah.

  1. Coba cari di .inifile yang dimuat oleh PHP ( phpinfo()dapat menunjukkan mana yang) - salah satunya harus mencoba memuat ekstensi itu.
  2. Perbaiki jalur ke file atau beri komentar di baris yang sesuai.
Pascal MARTIN
sumber
6
Jadi saya mendapatkan kesalahan ini juga, tetapi situs saya masih berfungsi - itu bagian yang paling aneh. Untuk jenis kesalahan ini, saya berasumsi bahwa php akan macet sejak awal. Sebagai gantinya saya mendapatkan halaman saya, tetapi logger saya mencatat kesalahan ini. Aneh ya?
BT
1
Di php.ini (/etc/php.ini dalam kasus saya) saya mengomentari baris extension = php_pdo_mysql.dll dan memulai ulang Apache yang memecahkan masalah saya dan menyingkirkan peringatan. (Mac, Maverick)
ola
Perbaiki jalan, jalan apa yang kita bicarakan?
prats1411
3. atau pasang ekstensi yang diharapkan yang hilang
Andrew
@ prats1411 di file ini: extension = [path here]
Andrew
37

Jika Anda menggunakan Linux, Anda dapat menemukan semua file konfigurasi yang dimuat dengan mengetik ini di shell:

php -r "print phpinfo();" | grep ".ini"

PEMBARUAN: Seperti yang disebutkan dalam komentar, ini bisa lebih akurat:

php -i | grep ini
nefski
sumber
5
php -i | grep iniharus berfungsi dengan baik juga (tidak perlu mencetak phpinfo ketika Anda memiliki argumen perintah untuk itu)
YorickH
1
Saya mengalami kesalahan serupa tetapi phpinfo()tidak mencantumkan file ini yang bermasalah. php -i | grep iniseperti yang disarankan oleh YorickH bekerja untuk saya. Ini akan mencantumkan pustaka yang dimuat untuk CLI dan ternyata file ini yang menyebabkan peringatan berada di bawah direktori CLI dalam kasus saya.
DaneeL
7
bagaimana php --inidengan daftar semua file ini
OzzyCzech
17

Jika Anda hanya ingin menghilangkan kesalahan, dan Anda tidak memerlukan ekstensi, maka komentar baris yang keluar php.ini. Tetapi jika Anda benar-benar ingin memperbaiki masalah ini, berikut adalah beberapa info tambahan.

Ada berbagai penyebab untuk hal ini berdasarkan modul pastinya, tetapi ada juga beberapa pedoman umum.

  1. Buka phpinfo()dan cari di extension_dirbawah Corebagian. Di sinilah modul Anda harus ditempatkan.

Misalnya, /usr/lib/php/modulesuntuk Unix / Linux.

  1. Jika file tersebut memang ada, pastikan izinnya memadai.
  2. Jika file tidak ada, gunakan sumber daya di bawah ini untuk menginstalnya.

Instalasi di * nix (PEAR)
Instalasi ekstensi di Windows

EternalHour
sumber
Saya mencoba untuk menginstal melalui modul pir ini tetapi ketika saya menjalankan perl install <module>saya mendapatCan't open perl script "install": File or Directory not found
Fabiotk
Sulit untuk mengetahui masalahnya, periksa jalur dan izin Anda.
EternalHour
jika dalam wadah cobadocker-php-ext-install <package>
jiggunjer
13

phpStom dengan XAMPP

TL; DR Kecuali dari memverifikasi bahwa file tersebut ada, Anda mungkin perlu menambahkan huruf drive ke beberapa catatan di file php.ini Anda

Saya tiba-tiba mulai mengalami masalah saat menggunakan phpStorm 7 untuk men-debug php dengan xampp dan xdebug. Saat mencoba mengatur intellij interperter menjadi xampps php saya mendapat banyak peringatan seperti yang ada di pertanyaan, misalnya:

Tidak dapat memuat pustaka dinamis '/xampp/php/ext/php_bz2.dll'

Untuk beberapa alasan saya harus menambahkan huruf drive saya ke catatan extension_dir dan browscap di file php.ini:

extension_dir = "\xampp\php\ext"
browscap = "\xampp\php\extras\browscap.ini"

untuk

extension_dir = "e:\xampp\php\ext"
browscap = "e:\xampp\php\extras\browscap.ini"
Secara teknis
sumber
2
Ini memperbaikinya untuk saya di Windows 10.
Justin Eldracher
1
Ini memperbaikinya untuk saya di windows 7. Terima kasih banyak
Paramjeet
6

php -r "echo php_ini_loaded_file();"

Akan ditampilkan dalam file CLI saat ini dimuat ini, cari di sana untuk ekstensi Anda, jalur ke sana salah.

Błażej Krzakala
sumber
4

Memuat .dll di Linux

Saya menemukan pesan peringatan ini ketika saya mencoba menginstal ekstensi-php melalui file php.ini ;

sampai saya mengetahui bahwa Anda tidak dapat memuat ekstensi .dll di Linux,

tetapi Anda harus komentar ekstensi yang ingin Anda impor ;extension= ... .dlldan menginstalnya dengan benar melaluisudo apt-get install php-...

catatan : ...adalah nama ekstensi yang ingin Anda aktifkan.

Marco DG
sumber
Persisnya, bagi saya itu hanya instalasi modul yang hilang - Saya menginstal phpPgAdmin dan apa yang perlu saya instal secara eksplisit adalah sudo apt install php-pgsqldan php-version-specific sudo apt install php7.1-pgsql(ubah 7.1 ke versi php Anda)
jave.web
3

Perhatikan bahwa Anda juga bisa mendapatkan kesalahan ini jika pustaka PHP Anda tidak memiliki izin pembukaan direktori "lainnya". Dalam kasus khusus saya, saya memperhatikan ini saat menggunakan php -luntuk memeriksa sintaks skrip di editor teks saya. Ini berarti bahwa karena akun saya disebut "volomike", akun tersebut tidak memiliki izin untuk menjalankan pustaka yang phpdiandalkan oleh perintah tersebut.

Misalnya, di Ubuntu 14.04, saya menginstal PHP5 secara otomatis ke jalur /usr/lib/php5/20121212+lfs. Namun, karena saya bekerja di C ++ dalam membangun beberapa objek bersama, saya mengotak-atik izin direktori dan mengacaukan segalanya sehingga akun non-root tidak memiliki izin eksekusi direktori (direktori terbuka) untuk dilihat /usr/lib/php5/20121212+lfs. Jadi, saya mengetik perintah berikut untuk memperbaiki masalah itu:

sudo chmod o+x /usr/lib/php5/20121212+lfs.

Sekarang ketika saya melakukannya php -l example.phpsebagai pengguna non-root, itu tidak pernah memberi saya masalah "Tidak dapat memuat perpustakaan dinamis" ini lagi.

Volomike
sumber
Ini adalah solusi yang tepat untuk saya, menggunakan Ubuntu 16.10. Pastikan Anda mengubah ekstensi "ekstensi" menjadi. Jadi saat menggunakan Linux (konfigurasi standar memberi saya .dll)
mroesler
Saya menggunakan linux mint 18 dan ini masih berlaku
Dika
2

Saya mengalami masalah yang sama pada XAMPP untuk Windows ketika saya mencoba menginstal komposer. Saya lakukan php -vdan kesalahan melempar php:

Tidak dapat memuat pustaka dinamis '/xampp/php/ext/php_bz2.dll'

Butuh beberapa saat sampai saya menyadari bahwa saya perlu mengatur XAMPP saya. Jadi saya menjalankan setup_xampp.batdan php kembali bekerja seperti pesona.

Prima Putra
sumber
2

Saya mengalami masalah yang sama pada XAMPP untuk Windows10 ketika saya mencoba menginstal komposer.

Tidak dapat memuat pustaka dinamis '/xampp/php/ext/php_bz2.dll'

Kemudian ikuti langkah-langkah ini

  1. cukup buka current_xampp_containing_drive Anda: \ xampp (default_xampp_folder) \ php \ php.ini di texteditor (seperti notepad ++)
  2. sekarang temukan saja - apakah current_xampp_containing_drive: \ xampp ada?
  3. jika tidak, cari "extension_dir" dan dapatkan nama drive (c, d atau drive yang Anda inginkan) seperti.

extension_dir = "F: \ xampp731 \ php \ ext" (di sini finded_drive_name_from_the_file adalah F)

  1. sekali lagi ganti dengan finded_drive_name_from_the_file: \ xampp dengan current_xampp_containing_drive: \ xampp dan simpan.
  2. sekarang mulai lagi proses instalasi komposer, saya pikir masalah Anda akan terpecahkan.
Anjani Barnwal
sumber
1

Saya mengalami kesalahan ini pada sejumlah modul ketika saya menjalankan versi PHP yang berbeda secara berdampingan di server saya. Untuk mengatasinya, saya perlu menginstal paket yang tidak dapat ditemukan untuk versi PHP spesifik itu. Jadi, misalnya, jika saya melihat: -

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/20160303/xml.so'

Saya akan menginstal perpustakaan untuk versi PHP secara khusus: -

sudo apt-get install php7.1-xml

Dan kemudian restart Apache. Memperbaiki itu untuk saya. Anda dapat memeriksa versi Anda seperti ini: -

php -v
tongkat
sumber
1

Setelah Windows 10 XAMPPsekarang saya install LAMPP (XAMPP)di Ubuntu. Windows XAMPPmemiliki jauh lebih sedikit untuk dikonfigurasi dibandingkan dengan MAC (iOS) tetapi sekarang dengan Linux Ubuntu saya memiliki lebih sedikit karena ada lebih banyak yang terjadi di Linux (hal yang baik).

Saya bingung dan mengaktifkan mysqli.dll(dan mysql.dll: hapus "#" di/etc/php/7.2/cli/php.ini

Saya mulai mendapatkan PHP Warning: PHP Startup: Unable to load dynamic librarypesan terkait dll. Saya berkomentar mysql(and i).dlldi file yang sama tetapi pesannya tidak hilang sampai saya berkomentar "" di/opt/lampp/etc/php.ini .

Tampak seperti XAMPP membaca php.inifile dari /etc/php/7.2/clidan membuat modifikasi php.inidari /opt/lampp/etc. (; extension = php_pdo_mysql.dll setelah ";" memulai ulang Apache dan tidak ada lagi pesan apa pun.

Mehmet F Erten
sumber
1

Dalam kasus saya, saya mendapat kesalahan ini karena saya mengunduh versi thread-safe dari dll (diinfiks dengan -ts-), tetapi instalasi php php saya adalah non-thread-safe (diinfiks dengan -nts-). Mengunduh versi yang benar dari dll, sama persis dengan versi instalasi php saya memperbaiki masalah.

Klesun
sumber
1
Untuk memeriksa konfigurasi server thread-safe, lihat phpinfo () dan thread-safetydiaktifkan / dinonaktifkan. Memiliki kesalahan yang sama secara terbalik, mengunduh nts ketika dikonfigurasi untuk ts.
Andy
0

Saya mengalami kesalahan serupa. Kesalahan yang saya buat adalah menggunakan nama "controller" sebagai "Pages" bukan "pages" di url saya.

Ninad Kulkarni
sumber
0

Di Windows, ini bisa menjadi jalur yang salah di "Variabel lingkungan sistem". "Path" ke direktori php.exe haruslah yang bagus.

François Breton
sumber
0

Cari ekstensi yang tepat untuk versi PHP Anda di sini

Martin Kinuthia
sumber
1
Mengapa Driver Microsoft untuk PHP untuk SQL Server? Pertanyaan ini bukanlah tentang itu!
csabinho
0

Apa yang saya lakukan adalah;

1 - Saya pertama kali mengetahui versi PHP yang saya gunakan melalui fungsi phpinfo ()

<?php   
    phpinfo();
?>

2 - Dari sana Anda akan menemukan lokasi file konfigurasi (php.ini) Anda

metode hasil phpinfo ()

3 - Buka file itu

4 - Komentari baris yang mirip dengan gambar di bawah

Ini mungkin nilai yang berbeda tetapi harus terkait dengan ekstensi. Saya bukan ahli tetapi proses ini membantu saya memecahkan masalah serupa.

masukkan deskripsi gambar di sini

newProgramm3r
sumber
0

'C: /PHP/5.2.13/ext \ php_mcrypt1.dll'

Saya akan mengatakan ada beberapa kesalahan ketik pada php.ini Anda (ekstra 1). Mungkin Anda memuat php.ini yang berbeda dari yang Anda harapkan (lihat keluaran dari php.ini untuk memastikan).

Selain itu pastikan bahwa php_mcrypt.dll dan PHP:

Ditautkan ke pustaka runtime VC yang sama (biasanya pnidui.dll untuk VC6 atau pnidui90.dll untuk VC9) - gunakan misalnya, alat bantu jalan ketergantungan untuk ini Apakah kedua build debug atau kedua build rilis Keduanya memiliki ZTS diaktifkan atau ZTS dinonaktifkan Untuk pustaka yang bergantung pada perpustakaan lebih lanjut (DLL), pastikan mereka tersedia (misalnya di direktori yang sama dengan ekstensi) PHP harus memberi Anda kesalahan yang berarti jika salah satu dari tiga kondisi pertama di atas tidak terpenuhi, tetapi saya tetap menulisnya karena saya tidak yakin untuk PHP 5.2.

Dharmendra Shah
sumber
-1

Saya memiliki masalah serupa dan di bawah ini adalah beberapa dari semua peringatan / kesalahan.

Warning: PHP Startup: Unable to load dynamic library 'curl' (tried: C:\php\ext\curl 
(The specified module could not be found.), C:\php\ext\php_curl.dll (The specified 
module 
could not be found.)) in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library 'fileinfo' (tried: 
C:\php\ext\fileinfo (The specified module could not be found.), 
C:\php\ext\php_fileinfo.dll (The specified module could not be found.)) in Unknown on 
line 0

Jika Anda memeriksa melalui peringatan, Anda akan melihat bahwa itu mencari ekstensi php di sana C:\php\ext\, saya mengunduh php ke C:\direktori dan itu menyelesaikan masalah.

Chetam Okafor
sumber