2013-03-21 15 views
6

C'è un modo per abilitare la sicurezza dei thread in PHP senza ricompilare o usare YUM per fare questo?Configurare dinamicamente PHP per sicurezza dei thread --enable-maintainer-zts, o usare yum per installare pthreads?

Sto cercando di installare pthreads e richiede che PHP sia stato compilato con --enable-maintainer-zts. Tuttavia, non ho intenzione di ricompilarlo perché vorrei gestire il mio stack PHP usando yum. Attualmente sto usando il repository REMI. Noto che c'è un pacchetto php-zts, tuttavia, non ce n'è uno disponibile per la mia versione PHP di 4.4 e non riesco a trovare un RPM sorgente per php-zts.

c'è un modo posso usare yum e abilitare la sicurezza dei thread in PHP, in modo da posso installare pThread utilizzando

#pecl install channel://pecl.php.net/pthreads-0.0.42 

downloading pthreads-0.0.42.tgz ... 
Starting to download pthreads-0.0.42.tgz (53,755 bytes) 
.............done: 53,755 bytes 
33 source files, building 
running: phpize 
Configuring for: 
PHP Api Version:   20100412 
Zend Module Api No:  20100525 
Zend Extension Api No: 220100525 
building in /var/tmp/pear-build-rootkThpG6/pthreads-0.0.42 
running: /var/tmp/pthreads/configure 

... 

checking whether to enable Threading API... yes, shared 
checking checking for ZTS... configure: error: pthreads requires ZTS, please re-compile PHP with ZTS enabled 
ERROR: `/var/tmp/pthreads/configure' failed 

Come si può vedere non riesce, al di sopra, perché PHP non ha abilitato ZTS .

+0

Aspetta, si sta eseguendo PHP 4.4 ?! –

+0

5.4.4 Credo .... –

+0

[Come compilare PHP 5.4/5.5/5.6 con pthreads e ZTS abilitati.] (Http://blog.flowl.info/2015/compile-php-5-6-pthreads -mongo-ubuntu /) – DanFromGermany

risposta

1

La disponibilità di ZTS viene determinata durante la compilazione, quindi no, non è possibile abilitarla e/o disabilitarla in modo dinamico.

È possibile installare pThread tramite yum o un altro gestore di pacchetti a seconda della distribuzione, ma si noti che "possibile" non significa necessariamente che sia un'opzione disponibile nel proprio caso. Ciò dipende dal fatto che il tuo repository software abbia un tale pacchetto disponibile, con una dipendenza da un'altra build PHP che abbia ZTS abilitato. Dubito fortemente che questo sarebbe il caso.

+0

Sarebbe possibile clonare la mia macchina virtuale, quindi compilare PHP con ZTS abilitato e quindi compilare il file.quindi per pThreads. Quindi copiare il file .so nella macchina originale che ha compilato PHP senza ZTS abilitato e ha funzionato effettivamente? – Dan

+0

@Dan no che non funzionerà neanche. I simboli non corrisponderanno se lo fai. –

1

Sfortunatamente, i manutentori dei pacchetti di CLI non abilitano la sicurezza dei thread nella maggior parte dei pacchetti unix. A volte è abilitato per worker mpm apache, ma non sempre include un ambiente di compilazione completo (tale che pecl non funzionerà).

In breve, non è possibile abilitare ZTS in fase di runtime, è un'opzione di compilazione che rende le modifiche alla compilazione semplicemente non possibili dopo la compilazione delle fonti.

Tuttavia, non è molto difficile installarne una copia.

Il percorso da eseguire dipende in gran parte dalla tua esperienza con la tua distribuzione e l'uso previsto.

Se si desidera realizzare sovrascrivere l'installazione del sistema con una versione thread-safe, c'è qualche info http://pthreads.org/building

Se si desidera realizzare costruire un impianto isolato, alcune informazioni possono essere trovate sulla pagina edificio al pthreads.org, in aggiunta , Ho sperimentato con RPM, http://github.com/krakjoe/spex contiene un file rpmbuild che eseguirà una copia di master e masterthread in/opt/php-pthreads con l'ambiente di compilazione completo, include e tutti i campanelli e fischietti, nessun supporto apache in rpmbuild versione perché lo renderebbe più complesso ed enorme, include fpm (anche supportato).

Sei la prima persona che ho incontrato che potrei effettivamente consigliare di usare rpmbuild, in considerazione del fatto che puoi quindi mantenere l'RPM per le altre VM e doverlo esaminare solo una volta (fino al prossimo aggiornamento in ogni caso), lo svantaggio di questo è, utilizza il sanguinamento codice di bordo da PHP, che è attualmente in beta ...

Speriamo che ti fa andare :)

+3

'http: // pthreads.org/building' è rotto – Baba

+0

Grazie per l'avviso, tornerò su gh-pages –