2009-05-17 15 views
9

ho php aggiunto come modulo per Apache 2.2.11:estensioni PHP non verranno caricati su Apache all'avvio

LoadModule php5_module "c:/php/php5apache2_2.dll" 

ed anche ha aggiunto

AddType application/x-httpd-php .php 

E nel php.ini, il mio dir estensione è impostata su: extension_dir = "C:\php\ext"

E , le directory sono corrette e tutti i file esistono.

Ma quando inizio apache, ottengo questi errori:

PHP Warning: PHP Startup: Impossibile caricare la dinamica libreria 'C: php \ ext \ php_mysql.dll \' - il modulo specificato non poteva essere trovato. \ r \ n in Unknown on line 0
PHP Attenzione: avvio PHP: impossibile caricare la libreria dinamica "C: \ php \ ext \ php_pdo_pgsql.dll" - Impossibile trovare il modulo specificato. \ r \ n in Unknown on line 0
PHP Attenzione: avvio di PHP: impossibile caricare la libreria dinamica "C: \ php \ ext \ php_pgsql.dll" - Impossibile trovare il modulo specificato. \ r \ n in Unknown on line 0

012.[dom 17 maggio 03:46:01 2009] [avviso] Apache/2.2.11 (Win32) PHP/5.2.9-2 configurato - riprendere le normali operazioni
[dom 17 maggio 03:46:01 2009] [ avviso] Server costruito: 10 dicembre 2008 00:10:06
[Dom May 17 03:46:01 2009] [notice] Parent: processo figlio creato 4652

PHP Avviso: avvio PHP: impossibile caricare la libreria dinamica ' C: \ php \ ext \ php_mysql.dll '- Impossibile trovare il modulo specificato. \ R \ n in Unknown on line 0
PHP Attenzione: avvio PHP: impossibile caricare la libreria dinamica' C: \ php \ ext \ php_pdo_pgsql.dll '- Impossibile trovare il modulo specificato. \ r \ n in Unknown on line 0
PHP Attenzione: avvio PHP: impossibile caricare la libreria dinamica' C: \ php \ ex t \ php_pgsql.dll '- Impossibile trovare il modulo specificato. \ r \ n in Sconosciuto in linea 0

[Dom 17 maggio 03:46:01 2009] [notice] Bambino 4652: processo figlio in esecuzione
[Sun May 17 03:46:01 2009] [notice] Bambino 4652: acquisito il mutex di partenza.
[Dom 17 maggio 03:46:01 2009] [notice] Bambino 4652: avvio di 64 thread di lavoro.
[Sun 17 mag 03:46:01 2009] [Avviso] Bambini 4652: Avvio di filo per l'ascolto sulla porta 80.

Quindi probabilmente sto dimenticando qualcosa di semplice qui, qualcuno mi può dire quello che ho dimenticando?

+0

+1 per dirmi come caricare LoadModule php su Windows! –

risposta

7

Non solo sono necessarie le DLL di estensione PHP per aggiungere il supporto per MySQL e PostgreSQL a PHP. Hai anche bisogno di librerie native MySQL e PostgreSQL. Probabilmente le DLL dell'estensione di PHP non stanno trovando alcune DLL da cui dipendono, quindi non possono avviarsi.

Assicurarsi di avere installato il client MySQL e PostgreSQL e le relative DLL in una posizione individuabile.

I.E. example:

  • php_mysql.dll dipende da libmysql.dll

Quindi, assicurarsi che PHP sia in grado di trovare libmysql.dll (credo che questo sia fornito con la distribuzione binaria di Windows PHP. Non è sicuro).

+1

Spostare la DLL richiesta nella directory ext insieme a php_mysql.dll sembra fare il trucco. Grazie. –

+0

Se non si desidera modificare la variabile d'ambiente PATH, è sufficiente inserire libmysql.dll nella directory bin di Apache. – thomiel

0

il problema qui è che apache ha caricato PHP, ma PHP non è stato in grado di caricare la sua estensione (mysql, postgresql, ...). Penso che dovresti inserire i valori del percorso nel tuo file php.ini in formato unix (non usare i caratteri rovesciati come separatore di directory). Quindi nel tuo php.ini di modifica del file in questo modo:

extension_dir = "C:/php/ext"

1

tali estensioni dipendono da librerie native, che sono previsti dalle distribuzioni binarie MySQL e PostgreSQL. Installali e inserisci le librerie nella cartella bin di apache, ad esempio. Questi sono rispettivamente LIBMYSQL.DLL e LIBPQ.DLL.

Io di solito lo faccio invece di inquinare la cartella Windows/System32 con loro, perché sul mio sistema solo l'apache/php è il client di quei database e inoltre rende la mia configurazione di apache/php più portabile.

1

Ho avuto un problema con una versione specifica di PHP su Windows. Il problema era libmysql. Ho trovato un bug postato sul sito php.net da qualcuno che ha lo stesso problema.

Ho usato la versione precedente di php e ha funzionato libmysql. Controlla le note sulla distribuzione di php che stai utilizzando. Penso che dopo una versione specifica menzionino una nuova politica riguardante libmysql.

Da quello che dici di php non riesci a trovare le estensioni. Assicurati di aver impostato il percorso su php.ini che specifica dove si trovano le estensioni, che esistono le estensioni e che è possibile accedere alla cartella (autorizzazioni di lettura).

Se tutto fallisce, provare a spostare l'estensione su windows/system32 nel tentativo di trovare quale potrebbe essere il vero problema.

saluti,

1

Nella mia esperienza, PHP su Windows è un grande dolore nel sedere. Di solito riesco a farlo funzionare alla fine, ma c'è sempre un sacco di googling e tentativi ed errori coinvolti - almeno per me.

Quindi alla fine mi sono stancato e ho semplicemente installato Ubuntu Server in una VM e l'ho installato e funzionante in pochi minuti. Se questa è un'opzione per te o no, non posso dirlo, ma se lo è sicuramente ti risparmierà un sacco di mal di testa a lungo termine. Per non parlare del fatto che puoi sempre muovere le tue macchine virtuali, creare istantanee e fare tutte le altre cose fantastiche per cui le macchine virtuali sono buone.

+0

esattamente i miei pensieri. – merlinbeard

2

Da aggiungere al consiglio di Pablo Santa Cruz. Su Windows è possibile includere le librerie richieste nell'ambiente PATH. (Non necessariamente copiare nella cartella Windows). Quando si caricano le librerie, le vedove appaiono anche nelle directory PATH.

Se si utilizza la distribuzione binaria Win32 standard da php.net per PHP5.2, il pacchetto deve contenere tutte le dipendenze nella radice dei pacchetti. Quindi, se hai installato PHP5.2 in C:\php, aggiungi questa directory all'envar PATH. Riavviare Apache e mi aspetto che le estensioni vengano caricate correttamente.

-1

Ho avuto lo stesso problema e ho provato a copiare libmySQL.dll nella cartella bin di apache e ho risolto il problema (sto configurando PHP 5.2.5 x64). Mille grazie.

0

Sono anche avuto lo stesso problema e risolto con l'aggiunta di "PostgreSQL" percorso bin in variabili di ambiente del sistema

PERCORSO: C: \ Program Files \ PostgreSQL \ 8.4 \ bin Puoi effettuare check in phpinfo() anche .

Quando installo PostgreSQL, l'impostazione in Percorso di sistema è mancante. Ho aggiunto manualmente quindi riavvia il sistema.

0

Ho avuto anche questo problema e ho copiato i file (.dlls) pertinenti su systen 32 e ancora non ha funzionato per me. Sto usando Windows 7 a 64 bit. Per far funzionare tutto questo dovevo copiare anche libmysql.dll nella directory ext. Il messaggio di errore ha lasciato il log di Apache e la pagina è stata caricata con una risposta favorevole (conection stabilita).

1

Ho avuto lo stesso problema. Stavo ricevendo uno di quegli fastidiosi errori di Windows popup ogni volta che ho provato ad accedere a phpmyadmin. Ho inserito il nome utente e la password e poi ho generato l'errore.

Ciò che ha risolto per me, è stato anche copiare libmysql.dl nella directory bin di apache. La cosa strana è apparentemente le estensioni dove incluso correttamente, ma ho ancora bisogno di farlo.

1

Ho provato diverse di queste soluzioni e uno o più di essi hanno funzionato ... Il riavvio è la chiave qui. Non ho riparto tra questi cambiamenti, ma dopo che ho riavviato lavoravo:

  • aggiungere Postgres DLL per Apache lib dir
  • aggiungere Postgres percorso PATH sistema
  • aggiungere Postgres DLL per System32

Credo che il PERCORSO avrebbe funzionato, ma non c'è tempo per la pulizia qui, quindi eccoci qui.

+0

Grazie @Andyj. Aggiunta la dir che contiene libmysql.dll in PATH e il riavvio ha funzionato. – xilef

Problemi correlati