2013-04-03 20 views
8

Mi piacerebbe installare l'estensione PHP 'pthreads' su Ubuntu. Sto usando Ubuntu 12.04.1 LTS. E posso aggiornare se necessario. Non voglio davvero compilare nulla dalla fonte. Ad esempio ricompilare PHP dai suoni di origine come un'idea orribile per me.Come installare l'estensione PHP pthreads su Ubuntu?

A mio avviso, l'opzione migliore è installare questa estensione con il comando aptitude. Ad esempio, come aptitude install php5-mysql. Un'altra buona idea è usare il pecl pecl install pthreads. Ma è non funziona per me a causa del seguente errore:

checking checking for ZTS... configure: error: pthreads requires ZTS, please re-compile PHP with ZTS enabled

Vi spiego perché non mi piace l'idea di ricompilare PHP dai sorgenti:

  • Credo che dovrei disinstallare PHP originale pacchetto quindi e tutte le dipendenze. Perché se lo compilo su PHP standard, qualsiasi aggiornamento di pacchetti sovrascriverebbe le mie modifiche. E sì, un'altra opzione è impedire l'aggiornamento di PHP. Ad ogni modo questo introduce del lavoro extra e rende la configurazione più complicata. Lavoriamo nel team distribuito. E non voglio che altre persone si occupino di questa complicata installazione sui server di produzione.
  • Voglio installare gli aggiornamenti sui server. E non voglio ricompilare PHP a causa di correzioni di sicurezza ecc.
  • Non voglio compilare nulla sui server di produzione e farlo molte volte. Quindi dovrei creare i miei pacchetti personali e aggiornarli con nuove versioni ecc. Scusate ma non sono abbastanza intelligente per farlo. Potrebbe essere tra 2-3 anni ma non ora. Perché ci sono molte cose da tenere a mente qui. Ad esempio come, per sostituire il pacchetto PHP standard con il pacchetto personalizzato, mentre si soddisfano ancora tutte le dipendenze.

Alcune referenze:

questo articolo sembra essere vecchio e non reale. Lo terrò solo per riferimento. E suppongo che dovrebbe essere letto come 'PHP non era thread-safe 3 anni fa'.

+2

Immagino che dovrai compilarlo. Tutte le risorse che ho trovato online dicono che devi. A proposito, non è così difficile. –

+0

Devi essere d'accordo con @BartFriederichs, se in qualche modo riesci a farlo, per favore digli come. – confiq

+0

@BartFriederichs, grazie per il commento. Sono d'accordo che non è molto difficile. Il problema è come installarlo su diversi server di produzione. Perfettamente dovrei creare il mio pacchetto, metterlo nella mia distribuzione e installarlo sui server con 'aptitude' dalla mia distribuzione. Ma io non lo faccio per il driver MySQL perché questo è già fatto. E voglio credere che non sono l'unica persona che usa pthreads e la stessa impostazione dovrebbe essere fatta anche per i pthread. –

risposta

9

ZTS: [Z] fine [T] hread [S] sicurezza.

ZTS è un'opzione di tempo di compilazione che non può essere abilitata in fase di esecuzione.Consente all'interprete PHP, che di solito viene eseguito in un singolo thread, di essere eseguito in molti, ciascuno con la propria istanza isolata dell'interprete.

L'unica opzione per te sembra essere una nuova build e quindi utilizzare strumenti di creazione pacchetti per la tua distribuzione.

Non sono in grado di consigliare direttamente la creazione di un deb, tuttavia, creare un rpm è abbastanza banale, https://github.com/krakjoe/spex c'è un punto di partenza per questo, è quindi possibile utilizzare alien per trasformare un RPM in un deb se si non sono in grado di scoprire come creare direttamente pacchetti deb.

Costruire dal sorgente sarà inevitabile, a meno che non si riesca a trovare qualche repository con una build thread-safe di PHP, con un ambiente di compilazione completo. A tal fine, le informazioni http://pthreads.org/building potrebbero essere utili. In realtà non è così difficile costruire PHP, né ci vogliono molte ore, su hardware moderno è possibile avere una build in meno di un minuto. È possibile e dovrebbe cogliere l'opportunità di tagliare il grasso dall'installazione.

In una nota a margine, l'articolo che si riferisce a PHP non essendo thread-safe è del 2008, è molto sbagliato. Il nucleo è thread-safe, ci sono alcune estensioni intrinsecamente non sicure (non astratte male, ma fondamentalmente inadatte).

+0

Grazie per il commento, è davvero utile. Mi fa credere che mi stia muovendo nella giusta direzione;) –

+3

Broken Link .. Correggere ... – Baba

+0

Qual è la differenza tra ZTS e i binari di sicurezza dei thread che puoi scaricare da qualcosa come qui: http: // windows .php.net/download/ – CMCDragonkai

6

Sembra, Ubuntu non dispone di un pacchetto per il PHP thread-safe nei repository ufficiali. L'estensione pthreads richiede ZTS. Così, si hanno due opzioni:

  1. compilarlo da soli:
  2. trovare un pacchetto .deb da qualche parte, per esempio repository degli altri sistemi simili a Debian.

Vorrei compilarlo e confezionarlo da solo utilizzando l'utilità "checkintsall". Quindi, Apt avrà la possibilità di tenere traccia della versione di PHP. Vorrei anche richiedere a Canonical un pacchetto per ZTS PHP.

+0

Grazie per la risposta. Penso che molte persone dovrebbero farlo durante l'installazione di pthread su Ubuntu. Questo è il motivo per cui ho pensato che ci dovrebbe essere qualche soluzione. Ma questa risultò essere una domanda piuttosto complicata. E suppongo che Canonical non includa intenzionalmente i binari PHP thread-safe. Ma potrebbe esserci qualche progetto in cui questo è già stato fatto? –

+0

Buona nota su checkinstall. Ciò contribuirà a mantenere la cache dei pacchetti gestibile. Con checkinstall è anche possibile impostare una versione corrispondente, poiché possono esserci problemi aggiungendo il deb ai pacchetti installati. Miglior controllo con '' apt-cache show '' 'per ottenere la versione richiesta o semplicemente comprimerla (checkinstall) con la versione di sistema' '' apt-cache show php5 | grep Version'''. –