da circa 2 settimane php 5.3 Egli entra lentamente ma inesorabilmente la storia. L'11 hanno annunciato la fine della sua manutenzione e che saranno inseriti solo le patch di sicurezza per 1 anno. fondamentalmente PHP 5.4 va in fasi vecchia stalla e PHP 5.5 diventa stabile, che è meno divertente perché ancora parte di aggiunte e nuovi plugin php non funzionano correttamente, ma piuttosto la versione 5.5 È abbastanza nuovo quindi mi asterrò dalla migrazione ad esso.

Quindi diciamo che per me la migrazione 5.4 da 5.3. In precedenza avevo messo informazioni per le funzioni obsoleti, quelli che hanno cambiato drasticamente e coloro che non potranno più essere mantenuta per senza drammi da entrambe le parti che non si accende o 😉 Quindi questa tempistica mattina di inizio della migrazione in giro 7 diventando, che non vi è il minimo dolore durante la migrazione se non andare senza problemi. Con mia grande sorpresa, tutto è andato più agevolmente – compilato PHP 5.4.17 Ho iniziato e apache-oh cielo è tutto lì. Un rapido sguardo intorno i registri ruggirà di funzioni depricated o non del tutto sconosciuto – Ovviamente i ragazzi hanno fatto bene il loro lavoro. Poi mi è stato appena ricompilare e supplementi che vengono compilati con la vecchia API come APC, RAR e altri. Secondo riavvio e tutto si addormentarono. A parte si aspettano miglioramenti della produttività come le persone in tutto il mondo puntando alluce alcune compresse in cui mostra come PHP 5.4 consuma meno RAM ed esegue gli script più veloce.

Pochi giorni fuori XAMPP 1.8.0 ieri dopo l'aggiornamento dalla versione 1.7.7 Ho avuto un problema abbastanza interessante. PhpMyAdmin-e lui non si apre e scoppiò a 403

Accesso vietato!


Nuovo concetto di sicurezza XAMPP:

L'accesso alla oggetto richiesto è disponibile solo dalla rete locale.

Questa impostazione può essere configurata nel file “httpd-xampp.conf”.

Immediatamente aperto httpd-xampp.conf che per me è in / opt / lampp / etc / extra /, A prima vista tutto sembrava bene. Le regole per rete locale sono stati tra. A parte il localhost apertura. WTF ??? Ho guardato il log-e vedo che il mio accesso è tagliato fuori dalla konfiguatsiyata. Ecco ora che cosa Ansimai e francamente un po 'meno fortuna trovato il problema. Dopo aver attraversato httpd.conf-e vide in Consenti / Nega clausole un'ultima ordine Richiede tutto scontato. Oh eureka. Si tratta di un nuovo meccanismo di controllo che è entrato in Apache 2.4. x. Dà accesso o rifiutando qualsiasi tale fine, fondamentalmente imita Consenti / Nega funzionalità :). Per risolvere il problema aggiungere Richiede tutte le direttive concessi per la cartella / opt / lampp / phpmyadmin. Dopo i cambiamenti in me assomiglia

<elenco “/opt / lampp / phpMyAdmin”>
AllowOverride AuthConfig Limite
Order consentire,negare
Consentire da tutto
Richiede tutto scontato
</elenco>

 

Viangi può provare con un altro selvaggio, Ad esempio, per rinominare la cartella phpMyAdmin qualcosa di diverso e non fare alias. Ma è brutto e non molto significativo 🙂

P.S Mi hanno chiesto perché io uso XAMPP non pulire l'installazione di tutti i componenti come loro è il mio Debian born – La risposta è molto semplice – pigrizia. Mi pigro per scrivere alcuni comandi poi toccato il suo konfovete etc.. Molto più facile sta colpendo l'intero pacchetto e decomprimere si accende 😉

Arricchito da Zemanta

Debian OpenLogo

Миналия ден един приятел ми писа че имал проблем с Debian server-a си. По точно не му пазел сессиите повече от 30 минути независимо колко се настройва session.gc_maxlifetime. В общи линии проблема е че Debian са решили да пренапишат поведението на сесиите като вместо garbage collector-а се стартира един cron на всяка 9-та и 39-та минута който почиства старите сесии. Тои се намира в /etc/cron.d/php5

като цяло семпличък скрипт който стартира от своя страна /usr/lib/php5/maxlifetime и в него се намира променливата колко време да е живота на кукито който е 1440 секунди или 24 минути 😉 От тук нататък има 2 варианта или да се спре крон-а и по този начин се прекратява автоматичното чистене което може по късно да се пренастрой от php.ini или направо в самия скрипт да се промени продължителноста на живота на сесиите с променливата max. Аз лично предпочитам втория вариант. Доста по чист е като цяло но има и недостатъкако се презапише файлът промените ни ще се изгубят което си е неприятен факт.

PS. Сега като се замисля вероятно ако се дефинира друго място където да се съхранява сеиината информация чрез самото php би трябвало да излезе извън обхвата на скрипта и по този начин да се използва пак по нормален сесията без да прекъсва грубо.

ini_set('session.gc_maxlifetime', 14400);
 ini_set('session.gc_probability', 1);
 ini_set('session.gc_divisor', 100);
 session_save_path(APP_PARENT_DIR . '/sessions');

Arricchito da Zemanta

Oggi parlo di la noia intorno ad un singolo server con Suhosin toppa e come Debian affare sqeeze con esso. Ora si comincia un po 'a distanza. Quando si installa php nel sistema dei pacchetti Debian (stabile per gli altri non posso dire quanto ancora) è necessario installare e Suhosin mod ad esso. Ho avuto problemi con qualche sistema MAH-frame scritto in php e ha preso la decisione cardinale, invece di fare il debug del sistema e di nuovo rapporto dello sviluppatore di perdere patch di sicurezza e quindi salvare me stesso il disturbo. Nel complesso posso dire con fiducia che questa è stata una delle decisioni più stupide che abbia mai scattato. Al primo modulo rimuovere PHP5-Suhosin riavvio del server web-a e oops postale – patch-un è ancora caricato. Dopo un breve studio trovare, che il pacchetto viene compilato e trotterella direttamente nel codice che significa che nessuna esclusione o la rimozione a meno ricompilare nuovamente il codice senza cerotto. Risolvere che si drapna e ricompilare al pacchetto deb. Fatto Detto fare il vostro apt-get PHP5 fonte mi tira questo codice sorgente, razpaketirva ed ecc. Ecco la mia idea ideale per rimuovere la fonte del pacchetto per rimuovere la patch e compilare di nuovo al pacchetto Debian più uno due piccole ottimizzazioni in compilazione. detto done – eliminare la zona inutile di debian / patches / suhosin.patch Gli ho tolto dal gioco in debian / patches / series. Finora tutto in modo chiaro e senza problemi. Quindi eseguire per compilare il pacchetto debuild e come mi aspettavo ho saltato la compilazione a causa di intestazioni mancanti. Naturalmente ci saranno penuria – Sono ancora con netinstall debian. Quick fix stupidità eseguire nuovamente la compilazione, ad un certo punto di svenire di nuovo solo, che con uno strano errore di Zend / zend_stream.h o .c Non ricordo esattamente (se riesco a fare più tardi per controllare esattamente quali file e la riga tuonato). Dopo qualche dubbio ciò che sta accadendo e perché diavolo può rombo del nucleo Zend – dove dovrebbe Rumble per qualsiasi motivo e un po 'di studio più trovare che questo problema è relativamente raro e non molti segni di esso. Ho il sospetto che una delle patch nell'origine era sbagliato, ma non ho i nervi a controllare. Hmmmmm strano super-strano. Quasi ho deciso di compilare il PHP puro, ma ho deciso di provare specchi dotdeb lì per vedere cosa succede. Ci compilazione è morto a causa di alcune strane dipendenze ma risparmiò i problemi nel corpo principale. Che a sua volta è comprensibile li facevano 30-40 patch che erano in pacchetto stabile. Dopo diversi tentativi falliti lunghe e mi sono stancato e ho spento il mio pacchetto di vaniglia e compilarlo con le opzioni quasi debian-ski con l'idea di riscrivere il mio attuale sistema ed installare nuovi pacchetti dall'alimentatore può comportarsi pacchetto installato dal repository (probabilmente un altro differenziata non è una soluzione ragionevole). Come mi aspettavo, senza alcuna installazione patch è andato liscio. Questo è il risultato del mio file config.nice:

#! /bin/sh
#
# Created by configure

CFLAGS='-g -O2 -fPIC -Wall -fsigned-char -fno-strict-aliasing   -gstabs' \
CXXFLAGS='-g -O2' \
'./configure' \
'--with-apxs2=/usr/bin/apxs2' \
'--prefix=/usr/local/php5' \
'--disable-cgi' \
'--with-config-file-path=/etc/php5/apache2' \
'--with-config-file-scan-dir=/etc/php5/apache2/conf.d' \
'--build=x86_64-linux-gnu' \
'--host=x86_64-linux-gnu' \
'--sysconfdir=/etc' \
'--localstatedir=/var' \
'--mandir=/usr/share/man' \
'--disable-debug' \
'--with-regex=php' \
'--disable-rpath' \
'--disable-static' \
'--with-pic' \
'--with-layout=GNU' \
'--with-pear=/usr/share/php' \
'--enable-calendar' \
'--enable-fileinfo' \
'--enable-hash' \
'--enable-json' \
'--enable-sysvsem' \
'--enable-sysvshm' \
'--enable-sysvmsg' \
'--enable-bcmath' \
'--with-bz2' \
'--enable-ctype' \
'--without-gdbm' \
'--with-iconv' \
'--enable-exif' \
'--enable-ftp' \
'--enable-dbase' \
'--with-gettext' \
'--enable-mbstring' \
'--with-onig=/usr' \
'--with-pcre-regex' \
'--with-mysql=shared,mysqlnd' \
'--with-mysql-sock=/var/run/mysqld/mysqld.sock' \
'--with-mysqli=shared,mysqlnd' \
'--enable-pdo=shared' \
'--with-pdo-mysql=shared,mysqlnd' \
'--with-pdo-odbc=shared,unixODBC,/usr' \
'--with-pdo-pgsql=shared,/usr/bin/pg_config' \
'--with-pdo-sqlite=shared,/usr' \
'--with-pdo-dblib=shared,/usr' \
'--enable-phar' \
'--enable-shmop' \
'--enable-sockets' \
'--enable-dom' \
'--enable-wddx' \
'--enable-tokenizer' \
'--with-zlib' \
'--with-kerberos=/usr' \
'--with-openssl=/usr' \
'--enable-soap' \
'--enable-zip' \
'--with-mhash=yes' \
'--with-exec-dir=/usr/lib/php5/libexec' \
'--with-system-tzdata' \
'--without-mm' \
'--with-readline=/usr' \
'--without-sybase-ct' \
'--without-sqlite' \
'--without-sqlite3' \
'--without-mssql' \
'--enable-pcntl' \
'--enable-inline-optimization' \
"[email protected]"

Questa configurazione è simile a quella di compilazione dotdeb. Като основаното и най важно е prefix опцията където ще се разполагат файловете с библиотеките на php. Него както и другите пъти ги коригирайте според вашата система така че да не се усети компилацията с промяна на пътищата.

Arricchito da Zemanta

Vector logo of the PHP programming language wi...

Днес ще драсна едно леко четиво за php cache di html. Тука говорим за кеширане на изхода от кода ни а не както съм писал да кешираме скритповете до opcode ниво с eAccelerator. Така за какво иде речнека да си припомним на бързо работата на php-то. Подаваме заявка на web server-a ни той приема параметрите който подаваме след това той ги подава на php скрипта той се компилира и плюе резултат в html вариант. Това е в доста общи линии. Каква ще е идеята ни тука да прескачаме заявки, да прескачаме големи блокове или не чак толкова големи блокове като директно изрисуваме вече веднъж компилирания изход. Преимуществата са очевиднинамаляна на времето за изпълнение, по малко натоварване и потребление на ресурси. Като цяло не е откриване на топлата вода нито е нещо кой знае колко сложно. Има множество класове за тая цел като PHP Pear Cache_Lite който разполага с прекрасна функционалност но аз мисля в бъдеще да си напиша мой с доста по облекчена структура и мой си изисквания към кеширането. Сега ще разгледаме най аборигенския вариант с Output Control Functions. Така нека да кешираме нещо

//start cache all output after that will be saved

ob_start();

//generate output

echo 'Some dynamic output';

echo 'Some other dynamic output ...';

//assign output into variable

$var=ob_get_contents();

//close cache output

ob_end_flush();

Горния код е тривиален но нека да обясним какво стана. Първо декларираме от коя част в кода започва кеширането. След това си генерираме по стандартен начин изхода от кода. След това генерирания изход се присъединява към променлива която ще е достъпна по късно дали през файл някакво или през sessions това си е ваше решение. Накрая изчистваме и прекратяваме кеширането. Съвсем тривиална операция ако да речем геенрирането на кеша минава през огромни блокове от код така можем да спестим доста процесорно време като кешираме за известно време или за една сесия. Вече всичко опира то това какво искате дали да е общодостъпен кеша или да е достъпен за различен потребител.

Arricchito da Zemanta