Avviso PHP: avvio PHP: impossibile caricare la libreria dinamica


94

Eseguo uno script PHP e ottengo questo errore:

Avviso PHP: avvio PHP: impossibile caricare la libreria dinamica '/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: impossibile aprire il file oggetto condiviso: nessun file o directory di questo tipo in Unknown sulla riga 0

Cosa significa?

Risposte:


55

Significa che c'è una riga extension=...o zend_extension=...in uno dei tuoi file di configurazione php (php.ini o un altro vicino ad esso) che sta cercando di caricare quell'estensione:ixed.5.2.lin

Sfortunatamente quel file o percorso non esiste o le autorizzazioni non sono corrette.

  1. Prova a cercare nei .inifile caricati da PHP ( phpinfo()può indicare quali sono): uno di loro dovrebbe provare a caricare quell'estensione.
  2. Correggere il percorso del file o commentare la riga corrispondente.

6
Quindi ricevo anche questo errore, ma il mio sito funziona ancora, questa è la parte più strana. Per questo tipo di errore, presumo che php si arresti in modo anomalo sin dall'inizio. Invece ottengo la mia pagina, ma il mio logger sta registrando questo errore. Strano eh?
BT

1
Nel php.ini (/etc/php.ini nel mio caso) ho commentato l' estensione di linea = php_pdo_mysql.dll e riavviato Apache che ha risolto il mio problema e si è sbarazzato degli avvisi. (Mac, Maverick)
ola

O correggere il percorso di quale percorso stiamo parlando?
prats1411

3. o installare l'estensione prevista mancante
Andrew

@ prats1411 nel file ini: extension = [path here]
Andrew

37

Se sei su Linux, puoi trovare tutti i file di configurazione caricati digitando questo nella shell:

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

AGGIORNAMENTO: come accennato nei commenti, questo può essere ancora più preciso:

php -i | grep ini

5
php -i | grep inidovrebbe funzionare bene anche (non è necessario stampare phpinfo quando hai un argomento di comando per quello)
YorickH

1
Ho riscontrato un errore simile ma phpinfo()non ho elencato alcun file ini problematico. php -i | grep inicome suggerito da YorickH ha funzionato per me. Questo elencherà le librerie caricate per la CLI e, come si è scoperto, il file ini che ha causato l'avviso si trovava nella directory CLI nel mio caso.
DaneeL

7
che ne dici php --inidi elencare tutti i file ini
OzzyCzech

17

Se vuoi solo far scomparire l'errore e non hai bisogno dell'estensione, allora commenta assolutamente la riga php.ini. Ma se vuoi davvero risolvere il problema, ecco alcune informazioni aggiuntive.

Ci sono varie cause per questo in base al modulo esatto, ma ci sono anche alcune linee guida generali.

  1. Apri phpinfo()e cerca extension_dirsotto la Coresezione. Qui è dove dovrebbero essere posizionati i tuoi moduli.

Ad esempio, /usr/lib/php/modulesper Unix / Linux.

  1. Se il file esiste effettivamente, assicurati che le autorizzazioni siano adeguate.
  2. Se il file non esiste, utilizzare le risorse seguenti per installarlo.

Installazione su * nix (PEAR)
Installazione di estensioni su Windows


Sto cercando di installare tramite questo modulo pera, ma quando corro perl install <module>ho ottenutoCan't open perl script "install": File or Directory not found
Fabiotk

È difficile conoscere il problema, controlla i tuoi percorsi e le autorizzazioni.
EternalHour

se in un contenitore provadocker-php-ext-install <package>
jiggunjer

13

phpStom con XAMPP

TL; DR Ad eccezione della verifica dell'esistenza dei file, potrebbe essere necessario aggiungere la lettera di unità ad alcuni record nel file php.ini

Improvvisamente ho iniziato ad avere un problema con phpStorm 7 per il debug di php con xampp e xdebug. Quando ho provato a impostare intellij interperter come xampps php ho ricevuto molti avvisi come quello nella domanda, ad esempio:

Impossibile caricare la libreria dinamica "/xampp/php/ext/php_bz2.dll"

Per qualche motivo ho dovuto aggiungere la mia lettera di unità ai record di extension_dir e browscap nel file php.ini:

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

per

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

2
Questo mi ha risolto su Windows 10.
Justin Eldracher

1
Questo ha risolto il problema per me su Windows 7. Grazie mille
Paramjeet

6

php -r "echo php_ini_loaded_file();"

Verrà visualizzato nel file ini caricato corrente della CLI, cercare lì l'estensione, il percorso non è corretto.


4

Caricamento di .dll in Linux

Ho riscontrato questo messaggio di avviso mentre stavo tentando di installare un'estensione php tramite il file php.ini ;

finché non ho capito che non puoi caricare le estensioni .dll in Linux,

ma devi commentare le estensioni che vuoi importare ;extension= ... .dlle installarle correttamente tramitesudo apt-get install php-...

nota : ...è il nome dell'estensione che desideri abilitare.


Esatto, per me mancava semplicemente l'installazione del modulo - stavo installando phpPgAdmin e quello che mi serviva per installare era esplicitamente sudo apt install php-pgsqle php-version-specific sudo apt install php7.1-pgsql(cambia 7.1 alla tua versione php)
jave.web

3

Nota che puoi ricevere questo errore anche se la tua libreria PHP non ha il permesso di apertura della directory "altro". Nel mio caso particolare, l'ho notato quando ho utilizzato php -lper il controllo della sintassi uno script nel mio editor di testo. Ciò significava che poiché il mio account era chiamato "volomike", quell'account non aveva il permesso di eseguire le librerie su cui si phpbasava il comando.

Ad esempio, su Ubuntu 14.04, avevo PHP5 installato automaticamente nel percorso /usr/lib/php5/20121212+lfs. Tuttavia, poiché stavo lavorando in C ++ nella creazione di alcuni oggetti condivisi, ho sbagliato con i permessi della directory e ho rovinato le cose in modo tale che gli account non root non avessero i permessi di esecuzione della directory (directory aperta) da visualizzare /usr/lib/php5/20121212+lfs. Quindi, ho digitato il seguente comando per correggere il problema:

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

Ora, quando faccio php -l example.phpcome utente non root, non mi dà più questo problema "Impossibile caricare la libreria dinamica".


Questa era la soluzione esatta per me, usando Ubuntu 16.10. Assicurati di cambiare l'estensione "extension" in .so quando usi Linux (la configurazione standard mi dava .dll)
mroesler

Sto usando Linux Mint 18 e questo è ancora valido
Dika

2

Ho avuto lo stesso problema su XAMPP per Windows quando ho provato a installare il compositore. Ho fatto php -ve php errore di lancio:

Impossibile caricare la libreria dinamica "/xampp/php/ext/php_bz2.dll"

Mi ci è voluto un po 'prima di capire che dovevo configurare il mio XAMPP. Quindi corro setup_xampp.bate php torna a funzionare come un incantesimo.


2

Ho avuto lo stesso problema su XAMPP per Windows10 quando ho provato a installare Composer.

Impossibile caricare la libreria dinamica "/xampp/php/ext/php_bz2.dll"

Quindi segui questi passaggi

  1. basta aprire il tuo current_xampp_containing_drive: \ xampp (default_xampp_folder) \ php \ php.ini in texteditor (come notepad ++)
  2. ora trova - esiste il current_xampp_containing_drive: \ xampp?
  3. in caso contrario, trova "extension_dir" e ottieni il nome dell'unità (c, do l'unità desiderata) come.

extension_dir = "F: \ xampp731 \ php \ ext" (qui finded_drive_name_from_the_file è F)

  1. di nuovo sostituisci con finded_drive_name_from_the_file: \ xampp con current_xampp_contain_drive: \ xampp e salva.
  2. ora inizia di nuovo il progresso dell'installazione del compositore, penso che il tuo problema sarà risolto.

1

Ho riscontrato questo errore su un numero di moduli quando eseguivo diverse versioni di PHP una accanto all'altra sul mio server. Per risolvere questo problema, avevo bisogno di installare i pacchetti che non riusciva a trovare per quella specifica versione di PHP. Quindi, ad esempio, se vedessi: -

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

Vorrei installare la libreria per la versione PHP in particolare: -

sudo apt-get install php7.1-xml

Quindi riavvia Apache. Risolto il problema per me. Puoi controllare la tua versione in questo modo: -

php -v

1

Dopo Windows 10 XAMPPora ho installato LAMPP (XAMPP)su Ubuntu. Windows XAMPPavevo molto meno da configurare rispetto a MAC (iOS) ma ora con Linux Ubuntu ne avevo un po 'di più dato che ce ne sono di più in Linux (una buona cosa).

Ho confuso e attivato mysqli.dll(e mysql.dll: cancella "#" in/etc/php/7.2/cli/php.ini

Ho iniziato a ricevere il PHP Warning: PHP Startup: Unable to load dynamic librarymessaggio relativo a dll. Ho commentato mysql(and i).dllnello stesso file ma il messaggio non è scomparso finché non ho commentato "" in /opt/lampp/etc/php.ini.

Looks come XAMPP legge php.inifile da /etc/php/7.2/clie rende modifica php.inidi /opt/lampp/etc. (; extension = php_pdo_mysql.dll dopo ";" riavviato Apache e nessun messaggio più.


1

Nel mio caso ho ricevuto questo errore perché ho scaricato una versione thread-safe della dll (infissa con -ts-), ma la mia installazione php di php era non thread-safe (infissa con -nts-). Il download della versione corretta della dll, che corrispondeva esattamente alla mia versione di installazione php, ha risolto il problema.


1
Per controllare la configurazione thread-safe del server vedi phpinfo () e thread-safetyabilitato / disabilitato. Ha avuto lo stesso errore al contrario, ha scaricato nts quando configurato per ts.
Andy

0

Ho riscontrato un errore simile. L'errore che ho commesso è stato utilizzare il nome "controller" come "Pages" invece di "pages" nel mio URL.


0

In Windows, potrebbe essere un percorso sbagliato in "Variabili di ambiente di sistema". Il "percorso" della directory php.exe deve essere quello corretto.


0

Cercare l'estensione esatta per la versione PHP qui


1
Perché per i driver Microsoft per PHP per SQL Server? Non è di questo che si tratta!
csabinho

0

Quello che ho fatto è stato;

1 - Per prima cosa scopro quale versione di PHP sto usando tramite la funzione phpinfo ()

<?php   
    phpinfo();
?>

2 - Da lì troverai la posizione del tuo file di configurazione (php.ini)

metodo phpinfo () risultato

3 - Apri quel file

4 - Commenta la linea simile all'immagine sottostante

Potrebbe trattarsi di un valore diverso ma dovrebbe essere correlato all'estensione. Non sono un esperto ma questo processo mi ha aiutato a risolvere un problema simile.

inserisci qui la descrizione dell'immagine


0

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

Direi che c'è qualche errore di battitura sul tuo php.ini (l'1 extra). Forse stai caricando un php.ini diverso da quello che ti aspetti (guarda l'output di php.ini per esserne sicuro).

Oltre a questo assicurati che php_mcrypt.dll e PHP:

Sono stati collegati alla stessa libreria di runtime VC (in genere msvcrt.dll per VC6 o msvcrt90.dll per VC9) - utilizzare ad esempio il walker delle dipendenze per questo Sono entrambe build di debug o entrambe le build di rilascio Entrambi hanno ZTS abilitato o ZTS disabilitato Per le librerie che dipendono da ulteriori librerie (DLL), assicurati che siano disponibili (ad esempio nella stessa directory dell'estensione) PHP dovrebbe darti errori di significato se una delle prime tre condizioni sopra non è soddisfatta, ma le ho scritte comunque perché non ne sono sicuro per PHP 5.2.


-1

Ho avuto un problema simile e di seguito sono riportati alcuni di tutti gli avvisi / errori.

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

Se controlli gli avvisi, vedrai che sta cercando estensioni php nel file C:\php\ext\così, ho scaricato php nella C:\directory e questo ha risolto i problemi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.