2011-12-06 12 views
6

Sto tentando di installare freetds e php-mssql su una casella RHEL5. Ho fatto con successo (ciò che sembra essere) tutto. Tuttavia, ottengo il seguente errore quando il PHP tenta di caricare il modulo:Modulo PHP con API compilata errata (impossibile inizializzare)

PHP Warning: PHP Startup: mssql: Unable to initialize module 
Module compiled with module API=20090626, debug=0, thread-safety=0 
PHP compiled with module API=20050922, debug=0, thread-safety=0 
These options need to match 

sto tirando fuori il mio cervello cercando di capire perché sono valori diversi, ma che non hanno successo.

Nell'ultimo tentativo, ho scaricato il sorgente php per la versione in esecuzione (php-5.3.8), sono entrato nella cartella ext/mssql e ho eseguito phpize, configure, make, make install.

Ho verificato che il file mssql.so si trova nella cartella appropriata e che php sta tentando di caricarlo.

phpize -v 
Configuring for: 
PHP Api Version:   20050922 
Zend Module Api No:  20090626 
Zend Extension Api No: 220090626 

risposta

11

RHEL avevano una vecchia versione di PHP (5.1.x), e l'installazione di nuove versioni di PHP (come ad esempio 5.3.x) significa diversi cambiamenti. Se installi da repository non ufficiali, vedrai i pacchetti chiamati php- * e php5- *. Avere entrambe le versioni può essere l'origine dei problemi.

Sembra che il sistema stia accedendo ad alcuni file di configurazione dalle precedenti installazioni di php.

Dai un'occhiata alla: - /etc/php.d Essere sicuri di non avere elementi da vecchie versioni - Date un'occhiata a/usr/bin/php-config *, Se si dispone di php-config e php-config5, rimuovere (rinominare) di/usr/bin/php-config e fare un link simbolico a quello nuovo:

# mv /usr/bin/php-config /usr/bin/php-config_old 
# ln -s /usr/bin/php-config5 /usr/bin/php-config 

Spero che questo aiuti

+0

Grazie. Stavo iniziando a teorizzare che potrebbero esserci due versioni di php installate. Ho notato che php-config dice version = "5.1.6", ma php -v mostra la versione 5.3.8. Nessun file php-config5 esiste. –

+0

Dove posso trovare la versione più recente di php-config se non esiste in/usr/bin? Dovrei fare una nuova installazione di php 5.3.8 (che è ciò che php è in esecuzione) per copiare su php-config? –

+1

Grazie mille, mi stavano dando dei grattacapi. Stavo cercando di installare memcached su osx ma continuavo ad avere questo problema. Alla fine ho usato pecl per installare 'pecl install memcached' una volta che avevo corretto le versioni php, phpize e php-config a quelle fornite da MAMP – jackofallcode

1

posso confermare che quando un modulo doesn' t carico a causa di un'API diversa a causa di un vecchio php-config. Quindi devi cercare in/usr/bin/php-config e sovrascriverlo con una versione più recente.

+0

Grazie David. Hai un suggerimento su come procedere (in riferimento al commento sulla risposta precedente a sinistra) –

+0

@AndrewVogel: Ho trovato un nuovo php-config nella cartella php ma ho installato php da un tarball. Penso che il vecchio php-config provenga da un'installazione remota come apt-get. Ho avuto lo stesso problema con eaccelarator. È questo che vuoi dire? – Bytemain

+0

Sì .. quale cartella hai avuto il nuovo php-config? O era nella tua cartella/usr/bin come indicato da jap1968? Se non ho un php-config più recente, suppongo che la mia unica opzione sarebbe di fare una nuova installazione di php? –

Problemi correlati