Uruchamiam skrypt PHP i otrzymuję ten błąd:
Ostrzeżenie PHP: Uruchomienie PHP: nie można załadować biblioteki dynamicznej '/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: nie można otworzyć pliku obiektu współdzielonego: nie ma takiego pliku lub katalogu w nieznanym w linii 0
Co to znaczy?
php
dynamic-library
Popolo
źródło
źródło
Jeśli korzystasz z Linuksa, możesz znaleźć wszystkie załadowane pliki konfiguracyjne, wpisując to w powłoce:
php -r "print phpinfo();" | grep ".ini"
AKTUALIZACJA: Jak wspomniano w komentarzach, może to być jeszcze dokładniejsze:
źródło
php -i | grep ini
powinno też działać dobrze (nie ma potrzeby drukowania phpinfo, gdy masz argument polecenia)phpinfo()
nie wymieniłem żadnych problematycznych plików ini.php -i | grep ini
zgodnie z sugestią YorickH pracował dla mnie. Spowoduje to wyświetlenie bibliotek załadowanych dla CLI i jak się okazało, plik ini, który spowodował ostrzeżenie, znajdował się w katalogu CLI w moim przypadku.php --ini
na wyświetlenie wszystkich plików iniJeśli chcesz tylko, aby błąd zniknął, a nie potrzebujesz rozszerzenia, to z całą pewnością skomentuj linię
php.ini
. Ale jeśli naprawdę chcesz rozwiązać problem, tutaj znajdziesz dodatkowe informacje.Istnieje wiele przyczyn takiego stanu rzeczy w zależności od konkretnego modułu, ale istnieją również pewne ogólne wytyczne.
phpinfo()
i poszukajextension_dir
wCore
sekcji. To jest miejsce, w którym powinny znajdować się Twoje moduły.Instalacja na * nix (PEAR)
Instalacja rozszerzeń w systemie Windows
źródło
perl install <module>
, dostałemCan't open perl script "install": File or Directory not found
docker-php-ext-install <package>
phpStom z XAMPP
TL; DR Oprócz sprawdzenia, czy pliki istnieją, może być konieczne dodanie litery dysku do niektórych rekordów w pliku php.ini
Nagle zacząłem mieć problem z używaniem phpStorm 7 do debugowania php za pomocą xampp i xdebug. Kiedy próbowałem ustawić intellij interperter na xampps php, otrzymałem wiele ostrzeżeń, takich jak to w pytaniu, na przykład:
Z jakiegoś powodu musiałem dodać moją literę dysku do rekordów rozszerzenie_dir i Browscap w pliku php.ini:
extension_dir = "\xampp\php\ext" browscap = "\xampp\php\extras\browscap.ini"
do
extension_dir = "e:\xampp\php\ext" browscap = "e:\xampp\php\extras\browscap.ini"
źródło
php -r "echo php_ini_loaded_file();"
Pokaże się w CLI bieżący załadowany plik ini, wyszukaj tam swoje rozszerzenie, ścieżka do niego jest nieprawidłowa.
źródło
Ładowanie .dll w systemie Linux
Napotkałem ten komunikat ostrzegawczy, gdy próbowałem zainstalować rozszerzenie php przez php.ini pliku ;
dopóki nie zorientowałem się, że nie możesz załadować .dll w Linuksie rozszerzeń ,
ale musisz skomentować rozszerzenia, które chcesz zaimportować
;extension= ... .dll
i poprawnie zainstalować przezsudo apt-get install php-...
uwaga :
...
to nazwa rozszerzenia, które chcesz włączyć.źródło
sudo apt install php-pgsql
specyficznesudo apt install php7.1-pgsql
dla wersji php (zmiana 7.1 na twoją wersję php)Zauważ, że możesz również otrzymać ten błąd, jeśli twoja biblioteka PHP nie ma "innych" uprawnień do otwierania katalogu. W moim konkretnym przypadku zauważyłem to podczas używania
php -l
do sprawdzania składni skryptu w moim edytorze tekstu. Oznaczało to, że ponieważ moje konto nazywało się „volomike”, to konto nie miało uprawnień do uruchamiania bibliotek, które mająphp
polegało polecenie.Na przykład w systemie Ubuntu 14.04 PHP5 zostało automatycznie zainstalowane w ścieżce
/usr/lib/php5/20121212+lfs
. Jednakże, ponieważ pracowałem w C ++ przy budowaniu niektórych obiektów współdzielonych, majstrowałem przy uprawnieniach do katalogu i schrzaniłem rzeczy tak, że konta inne niż root nie miały uprawnień do wykonywania katalogu (otwierania katalogu) do przeglądania/usr/lib/php5/20121212+lfs
. Tak więc wpisałem następujące polecenie, aby rozwiązać ten problem:sudo chmod o+x /usr/lib/php5/20121212+lfs
.Teraz, gdy robię to
php -l example.php
jako użytkownik inny niż root, nigdy więcej nie powoduje to problemu „Nie można załadować biblioteki dynamicznej”.źródło
Miałem ten sam problem na XAMPP dla Windows, kiedy próbowałem zainstalować Composer. Zrobiłem
php -v
i błąd wyrzucania php:Zajęło mi trochę czasu, zanim zdałem sobie sprawę, że muszę skonfigurować mój XAMPP. Więc biegnę
setup_xampp.bat
i php wraca do pracy jak marzenie.źródło
Miałem ten sam problem na XAMPP dla Windows10, kiedy próbowałem zainstalować Composer.
Następnie wykonaj poniższe czynności
źródło
Wystąpił ten błąd na wielu modułach, kiedy równolegle uruchamiałem różne wersje PHP na moim serwerze. Aby to rozwiązać, musiałem zainstalować pakiety, których nie mógł znaleźć dla tej konkretnej wersji PHP. Czyli na przykład, gdybym zobaczył: -
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/20160303/xml.so'
Zainstalowałbym bibliotekę specjalnie dla wersji PHP: -
sudo apt-get install php7.1-xml
A następnie uruchom ponownie Apache. Naprawiłem to dla mnie. Możesz sprawdzić swoją wersję w ten sposób: -
źródło
Później
Windows 10 XAMPP
zainstalowałemLAMPP (XAMPP)
na Ubuntu.Windows XAMPP
miałem dużo mniej do skonfigurowania w porównaniu z MAC (iOS), ale teraz z Linuksem Ubuntu miałem kilka więcej, ponieważ w Linuksie jest więcej (dobrze).mysqli.dll
Pomyliłem i aktywowałem (i mysql.dll: usuń „#” w/etc/php/7.2/cli/php.ini
Zacząłem otrzymywać
PHP Warning: PHP Startup: Unable to load dynamic library
wiadomość dotyczącądll
. Skomentowałemmysql(and i).dll
w tym samym pliku, ale wiadomość nie zniknęła, dopóki nie skomentowałem „” w/opt/lampp/etc/php.ini
.Wygląda XAMPP odczytuje
php.ini
plik z/etc/php/7.2/cli
i czyni modyfikację wphp.ini
z/opt/lampp/etc
. (; rozszerzenie = php_pdo_mysql.dll po ";" zrestartował Apache i nie ma już żadnych wiadomości.źródło
W moim przypadku otrzymałem ten błąd, ponieważ pobrałem bezpieczną wątkowo wersję biblioteki dll (z wrostkiem
-ts-
), ale moja instalacja php php nie była bezpieczna dla wątków (z wrostkiem-nts-
). Pobranie odpowiedniej wersji biblioteki dll, dokładnie pasującej do wersji instalacyjnej mojego php, rozwiązało problem.źródło
thread-safety
włącz / wyłącz. Wystąpił ten sam błąd w odwrotnej kolejności, pobrano nts po skonfigurowaniu dla ts.Napotkałem podobny błąd. Błędem, który popełniłem, było użycie nazwy „kontrolera” jako „Strony” zamiast „stron” w moim adresie URL.
źródło
W systemie Windows może to być nieprawidłowa ścieżka w „Zmiennych środowiskowych systemu”. „Ścieżka” do katalogu php.exe musi być dobra.
źródło
Poszukaj dokładnego rozszerzenia dla swojej wersji PHP tutaj
źródło
To, co zrobiłem, to;
1 - Najpierw dowiaduję się, jakiej wersji PHP używam za pomocą funkcji phpinfo ()
<?php phpinfo(); ?>
2 - Tam znajdziesz lokalizację pliku konfiguracyjnego (php.ini)
3 - Otwórz ten plik
4 - Skomentuj linię, podobnie jak na poniższym obrazku
źródło
„C: /PHP/5.2.13/ext \ php_mcrypt1.dll”
Powiedziałbym, że na twoim php.ini jest jakaś literówka (dodatkowa 1). Być może ładujesz plik php.ini inny niż tego, czego się spodziewasz (zobacz dane wyjściowe php.ini, aby się upewnić).
Poza tym upewnij się, że php_mcrypt.dll i PHP:
Zostały połączone z tą samą biblioteką wykonawczą VC (zwykle msvcrt.dll dla VC6 lub msvcrt90.dll dla VC9) - użyj np. Narzędzia do przechodzenia zależności. dalsze biblioteki (DLL), upewnij się, że są dostępne (np. w tym samym katalogu co rozszerzenie) PHP powinno podawać błędy znaczeniowe, jeśli którykolwiek z pierwszych trzech warunków powyżej nie jest spełniony, ale i tak je napisałem, ponieważ nie jestem pewien dla PHP 5.2.
źródło
W moim przypadku ta wiadomość zaczęła się pojawiać, gdy zaktualizowałem wersję php do 7.4.
Aby go rozwiązać, musiałem poszukać plików php.ini znalezionych w folderze wersji php (/etc/php/7.4/apache2/ && /etc/php/7.4/cli/), sprawdzając linie, w których widzę rozszerzenia rozszerzenia gd2 i intl zostały odkomentowane.
źródło
Z C: \ xampp \ php \ php.exe mam
Rozwiązałem przez wykomentowanie
C: \ xampp \ php \ php.ini
; extension =
źródło
Miałem podobny problem i poniżej jest część wszystkich ostrzeżeń / błędów.
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
Jeśli przejrzysz ostrzeżenia, zobaczysz, że szuka rozszerzeń php w
C:\php\ext\
tak, pobrałem php doC:\
katalogu i to rozwiązało problemy.źródło