PHP Uyarısı: PHP Başlangıcı: Dinamik kitaplık yüklenemiyor


102

Bir PHP betiği çalıştırıyorum ve şu hatayı alıyorum:

PHP Uyarısı: PHP Başlangıcı: Dinamik kitaplık yüklenemiyor '/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: paylaşılan nesne dosyası açılamıyor: 0 satırında Bilinmeyen klasöründe böyle bir dosya veya dizin yok

Bu ne anlama geliyor?

Yanıtlar:


57

Bu , php yapılandırma dosyalarınızdan birinde (php.ini veya ona yakın başka biri) bu uzantıyı yüklemeye çalışan bir extension=...veya zend_extension=...satır olduğu anlamına gelir :ixed.5.2.lin

Maalesef bu dosya veya yol mevcut değil veya izinler yanlış.

  1. .iniPHP tarafından yüklenen dosyalarda arama yapmayı deneyin ( phpinfo()hangilerinin olduğunu gösterebilir) - içlerinden biri bu uzantıyı yüklemeye çalışmalıdır.
  2. Ya dosyanın yolunu düzeltin ya da karşılık gelen satırı yorumlayın.

6
Bu yüzden ben de bu hatayı alıyorum, ancak sitem hala çalışıyor - bu en tuhaf kısmı. Bu tür bir hata için, php'nin en başından itibaren çökeceğini varsayıyorum. Bunun yerine sayfamı alıyorum, ancak kaydedicim bu hatayı kaydediyor. Tuhaf ha?
BT

1
Php.ini'de (benim durumumda /etc/php.ini) uzantı = php_pdo_mysql.dll satırını yorumladım ve sorunumu çözen ve uyarılardan kurtulan Apache'yi yeniden başlattım. (Mac, Maverick)
ola

Ya yolu düzeltin, hangi yoldan bahsediyoruz?
prats1411

3. veya eksik beklenen uzantıyı yükleyin
Andrew

@ prats1411 ini dosyasında: extension = [yol burada]
Andrew

38

Linux'taysanız, yüklenen tüm yapılandırma dosyalarını kabukta yazarak bulabilirsiniz:

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

GÜNCELLEME: Yorumlarda belirtildiği gibi, bu daha da doğru olabilir:

php -i | grep ini

5
php -i | grep iniçok iyi çalışmalı (bunun için bir komut argümanınız olduğunda phpinfo yazdırmaya gerek yok)
YorickH

1
Benzer bir hatayla karşılaştım ancak phpinfo()sorunlu ini dosyalarını listelemedim. YorickHphp -i | grep ini tarafından önerildiği gibi benim için çalıştı. Bu, CLI için yüklenen kitaplıkları listeleyecek ve uyarıya neden olan ini dosyasının benim durumumda CLI dizini altında olduğu ortaya çıktı.
DaneeL

8
php --initüm ini dosyalarını listelemeye ne dersiniz
OzzyCzech

17

Sadece hatayı ortadan kaldırmak istiyorsanız ve uzantıya ihtiyacınız yoksa, o zaman kesinlikle satırın dışına yorum yapın php.ini . Ancak, sorunu gerçekten çözmek istiyorsanız, burada bazı ek bilgiler var.

Tam modüle bağlı olarak bunun çeşitli nedenleri vardır, ancak bazı genel yönergeler de vardır.

  1. Açın phpinfo()ve bölümün extension_diraltına Corebakın. Bu, modüllerinizin yerleştirilmesi gereken yerdir.

Örneğin, /usr/lib/php/modulesUnix / Linux için.

  1. Dosya gerçekten mevcutsa, izinlerin yeterli olduğundan emin olun.
  2. Dosya yoksa, yüklemek için aşağıdaki kaynakları kullanın.

* Nix (PEAR) üzerine
kurulum Windows'ta uzantıların kurulumu


Bu armut modülüyle yüklemeye çalışıyorum ama çalıştırdığımda perl install <module>yakaladımCan't open perl script "install": File or Directory not found
Fabiotk

Sorunu bilmek, yollarınızı ve izinlerinizi kontrol etmek zor.
EternalHour

eğer bir kapta deneyindocker-php-ext-install <package>
jiggunjer

Bu, bunu php.ini'de aramama ve ardından klasörün boş olduğunu görmeme yardımcı oldu.
frankfurt-laravel

16

XAMPP ile phpStom

TL; DR Dosyaların var olduğunu doğrulamanın dışında, php.ini dosyanızdaki bazı kayıtlara sürücü harfini eklemeniz gerekebilir

Aniden xampp ve xdebug ile php hata ayıklamak için phpStorm 7 kullanırken bir sorun yaşamaya başladım. İntellij interperter'ı xampps php olarak ayarlamaya çalışırken, sorudaki gibi birçok uyarı aldım, örneğin:

Dinamik kitaplık '/xampp/php/ext/php_bz2.dll' yüklenemiyor

Bazı nedenlerden dolayı sürücü harfimi php.ini dosyasındaki extension_dir ve browsercap kayıtlarına eklemek zorunda kaldım:

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

-e

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

2
Bu, Windows 10'da benim için düzeltti.
Justin Eldracher

1
Bu, Windows 7'de benim için düzeltti. Çok teşekkürler
Paramjeet

Cmd'den extension_dir = "ext"çalıştırdığınızda çalışır kullanmak , ancak Apache'den çalıştırdığınızda muhtemelen mutlak bir yola ihtiyacınız vardır (sürücü harfi vb. İle).
Nux

6

php -r "echo php_ini_loaded_file();"

CLI'de mevcut ini yüklü dosyayı gösterecek, orada Uzantınız için arama yapın, yol yanlış.


4

Linux'ta .dll yükleniyor

Php.ini dosyası yoluyla bir php uzantısı kurmaya çalışırken bu uyarı mesajıyla karşılaştım ;

Linux'ta .dll uzantılarını yükleyemeyeceğinizi anlayıncaya kadar ,

ama buna mecbur Yorum Almak istediğiniz uzantıları ;extension= ... .dllve doğru yüklemek yoluylasudo apt-get install php-...

not : ...etkinleştirmek istediğiniz uzantı adıdır.


Kesinlikle, benim için sadece eksik modül montajı - Ben phpPgAdmin kurmadan ve ne açıkça yüklemek için gereken oldu sudo apt install php-pgsqlve php-sürüme özgü sudo apt install php7.1-pgsql(php sürümüne değişiklik 7.1)
jave.web

3

PHP kitaplığınızın "diğer" dizin açma iznine sahip olmaması durumunda da bu hatayı alabileceğinizi unutmayın. Benim özel durumumda, php -lmetin düzenleyicimde bir komut dizisini kontrol etmek için kullanırken bunu fark ettim . Bu, hesabıma "volomike" adı verildiği için, hesabın şu kitaplıkları çalıştırma izni olmadığı anlamına geliyordu:php komutun dayandığı .

Örneğin, Ubuntu 14.04'te, PHP5'i otomatik olarak yola yükledim /usr/lib/php5/20121212+lfs. Bununla birlikte, bazı paylaşılan nesneler oluşturmak için C ++ 'da çalıştığım için, dizin izinleriyle uğraştım ve işleri, kök olmayan hesapların görüntülemek için dizin yürütme (dizin açma) izinlerine sahip olmadığı şekilde batırdım /usr/lib/php5/20121212+lfs. Bu yüzden, bu sorunu gidermek için aşağıdaki komutu yazdım:

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

Şimdi php -l example.phproot olmayan bir kullanıcı olarak yaptığımda , artık bana bu "Dinamik kitaplık yüklenemedi" problemini vermiyor.


Ubuntu 16.10 kullanarak benim için tam çözüm buydu. Linux kullanırken "uzantı" uzantısını .so olarak değiştirdiğinizden emin olun (standart yapılandırma bana .dll veriyordu)
mroesler

Linux nane 18 kullanıyorum ve bu hala geçerli
Dika

2

Besteci kurmaya çalıştığımda da Windows için XAMPP'de aynı sorunu yaşadım. Yaptım php -vve php atma hatası:

Dinamik kitaplık '/xampp/php/ext/php_bz2.dll' yüklenemiyor

XAMPP'mi kurmam gerektiğini anlamam biraz zaman aldı. Bu yüzden setup_xampp.batbir sihir gibi çalışıyorum ve php işe dönüyorum.


2

Besteci kurmaya çalıştığımda da Windows10 için XAMPP'de aynı sorunu yaşadım.

Dinamik kitaplık '/xampp/php/ext/php_bz2.dll' yüklenemiyor

Ardından bu adımları izleyin

  1. sadece texteditor'da current_xampp_containing_drive: \ xampp (default_xampp_folder) \ php \ php.ini dosyasını açın (notepad ++ gibi)
  2. şimdi sadece bulun - current_xampp_containing_drive: \ xampp var mı?
  3. yoksa, "extension_dir" dosyasını bulun ve sürücü adını (c, d veya istediğiniz sürücü) gibi alın.

extension_dir = "F: \ xampp731 \ php \ ext" (burada finded_drive_name_from_the_file F'dir)

  1. tekrar finded_drive_name_from_the_file: \ xampp ile current_xampp_containing_drive: \ xampp ile değiştirin ve kaydedin.
  2. Şimdi besteci kurulum sürecini tekrar başlatın, probleminizin çözüleceğini düşünüyorum.

1

Sunucumda farklı PHP sürümlerini yan yana çalıştırdığım bir dizi modülde bu hatayı aldım. Bunu çözmek için, o belirli PHP sürümü için bulamadığı paketleri yüklemem gerekiyordu. Öyleyse, örneğin, şunları görürsem: -

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

Kitaplığı özellikle PHP sürümü için kurardım: -

sudo apt-get install php7.1-xml

Ve sonra Apache'yi yeniden başlatın. Benim için düzelt. Sürümünüzü şu şekilde kontrol edebilirsiniz: -

php -v

1

Bundan sonra Ubuntu'ya Windows 10 XAMPPkurdum LAMPP (XAMPP).Windows XAMPPMAC (iOS) ile karşılaştırıldığında yapılandırmak için çok daha az şey vardı ama şimdi Linux Ubuntu ile Linux'ta daha çok gidiş olduğundan birkaç tane daha vardı (iyi bir şey).

Kafam karıştı ve etkinleştirdim mysqli.dll(ve mysql.dll: "#" dosyasını sil/etc/php/7.2/cli/php.ini

PHP Warning: PHP Startup: Unable to load dynamic libraryİle ilgili mesajı almaya başladım dll. mysql(and i).dllAynı dosyaya yorum yaptım, ancak mesajda "" yorum yapana kadar mesaj kaybolmadı /opt/lampp/etc/php.ini.

XAMPP gibi görünüyor okur php.inidosyayı /etc/php/7.2/clive değişiklik yapar php.iniait /opt/lampp/etc. (; extension = php_pdo_mysql.dll, ";" Apache'yi yeniden başlattıktan sonra başka mesaj yok.


1

Benim durumumda bu hatayı aldım çünkü dll'nin iş parçacığı korumalı bir sürümünü indirdim (eklenmiş -ts-), ancak php'nin php yüklemesi iş parçacığı güvenli değil (ile karıştırılmış -nts-). PHP kurulum sürümümle tam olarak eşleşen dll'nin doğru sürümünü indirmek sorunu çözdü.


1
Sunucu iş parçacığı açısından güvenli yapılandırmayı kontrol etmek için bkz. Phpinfo () ve thread-safetyetkin / devre dışı. Ts için yapılandırıldığında aynı hatayı tersine, nts indirildi.
Andy

0

Benzer bir hatayla karşılaştım. Yaptığım hata, url'mde "sayfalar" yerine "denetleyici" adını "Sayfalar" olarak kullanmaktı.


0

Windows'ta, "Sistem ortamı değişkenlerinde" yanlış bir yol olabilir. Php.exe dizininin "yolu" iyi olanı olmalıdır.


0

PHP sürümünüz için tam uzantıyı burada arayın


1
Neden SQL Server için PHP'ye yönelik Microsoft Sürücüler için? Bu soru bununla ilgili değil!
csabinho

0

Yaptığım şey;

1 - Önce phpinfo () işlevi aracılığıyla hangi PHP sürümünü kullandığımı öğreniyorum

<?php   
    phpinfo();
?>

2 - Oradan konfigürasyon (php.ini) dosyanızın konumunu bulacaksınız

yöntem phpinfo () sonucu

3 - Bu dosyayı açın

4 - Aşağıdaki resme benzer bir satırı yorumlayın

Bu farklı bir değer olabilir ancak uzantı ile ilgili olmalıdır. Uzman değilim ama bu süreç benzer problemleri çözmeme yardımcı oldu.

görüntü açıklamasını buraya girin


0

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

Php.ini'nizde bir miktar yazım hatası olduğunu söyleyebilirim (ekstra 1). Belki de beklediğinizden farklı bir php.ini yüklüyorsunuz (emin olmak için php.ini çıktısına bakın).

Bunun dışında php_mcrypt.dll ve PHP'nin:

Aynı VC çalışma zamanı kitaplığına bağlanmıştır (tipik olarak VC6 için msvcrt.dll veya VC9 için msvcrt90.dll) - örneğin bunun için bağımlılık yürütme aracını kullanın Her iki sürüm yapısı da hata ayıklama derlemesi mi yoksa her iki sürüm yapısı da Her ikisinin de ZTS etkin veya ZTS devre dışı bırakıldığına bağlı kitaplıklar için daha fazla kitaplık (DLL), mevcut olduklarından emin olun (örneğin, uzantı ile aynı dizinde) PHP, yukarıdaki ilk üç koşuldan herhangi biri karşılanmazsa size hataların anlamını vermelidir, ancak bunları yine de yazdım çünkü emin değilim PHP 5.2 için.


0

Benim durumumda, php sürümünü 7.4'e güncellediğimde bu mesaj görünmeye başladı.

Bunu çözmek için php sürüm klasöründe bulunan php.ini dosyalarını (/etc/php/7.4/apache2/ && /etc/php/7.4/cli/) görebildiğim uzantıların bulunduğu satırları kontrol etmeliydim. gd2 ve intl uzantıları yorumlanmadı.


0

C: \ xampp \ php \ php.exe'den aldım

  • Dinamik kitaplık yüklenemiyor ''
  • C: \ xampp \ php \ ext \ php_.dll (Belirtilen modül bulunamadı.)

Dışarı yorum yapma çözülmüştür
C: \ xampp \ php \ php.ini
; uzantısı =


-1

Benzer bir sorun yaşadım ve tüm uyarıların / hataların bazıları aşağıda.

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

Uyarıları kontrol ederseniz, içinde php uzantılarını aradığını göreceksiniz C:\php\ext\, ben C:\dizine php'yi indirdim ve bu sorunları çözdü.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.