Från runt 2 veckor php 5.3 Ange berättelsen sakta men säkert. 11 meddelade i slutet av dess underhåll och det spelas bara säkerhetskorrigeringar för 1 år. I allmänhet, PHP 5.4 passerar i etapper och gamla stabila PHP 5.5 blir stabil, vilket är typ roligt eftersom du fortfarande en del av tillägg och plugins för php fungerar inte helt korrekt men version 5.5 är ganska ny så jag avstår från migration till henne.

Så låt oss säga för min migrering till 5.4 från 5.3. Tidigare jag hade postat den information för föråldrade funktioner, de som har ändrat min hela personlighet och de som inte längre har att upprätthålla har inga dramer på båda sidor om det kommer till start eller inte 😉 så jag valde denna morgon timme för start av migrationen runt 7 så blev det, som det finns minimal smärta under migreringen om du inte går smidigt. Till min enorma förvåning gick allt smidigare – du har sammanställt PHP 5.4.17 Jag började apache och Oh himlarna, det är allt det. En snabb blick genom loggar roar inte depricated eller okända funktioner – Tydligen, pojkarna har gjort sitt jobb väl. Då måste jag bara prekompiliram och tillägg som kompileras med gamla API som APC, RAR etc.. En andra omstart och alla sov. Separat, förvänta prestandaförbättringar eftersom överallt människor som pekar stora tå magasinen som visar hur PHP 5.4 förbrukar mindre RAM och exekverar skript snabbare.

För några dagar sedan kom ut XAMPP 1.8.0 Efter uppgradering från version 1.7.7 Jag hade ett ganska intressant problem. PhpMyAdmin-inte min öppning och izg″rmâvaše med 403

Tillträde förbjudet!


Nytt XAMPP security koncept:

Tillgång till det begärda objektet är endast tillgänglig från det lokala nätverket.

Den här inställningen kan konfigureras i filen “httpd-xampp.conf”.

Nu öppnade jag den httpd-conf xampp vilket för mig... ligger i the/opt/lampp/etc/extra /, vid första anblicken, verkade allt bra. Reglerna för det lokala nätverket var fina. Bortsett från att jag skulle öppna localhost. WTF ??? Jag tittade på loggen och se att min tillgång är avskuren av konfiguaciâta. Här saker redan ahnaha mig och ärligt slags lite tur jag hittade problem. След като преглеждах httpd.conf-а видях в Tillåt/neka клаузите един последен ред Kräver alla beviljade. Åh till Eureka. Detta är den nya kontrollmekanism som trädde i Apache 2.4.x. Det ger tillgång till eller vägra sådan alla fina, i princip imiterade Allow/Deny funktionalitet :). За да поправим проблема добавяме kräver alla beviljade в директивите за папката /opt/lampp/phpmyadmin. Efter ändringarna i mig ser ut så här

<Katalog “/välja/lampp/phpmyadmin”>
AllowOverride AuthConfig gräns
Beställning tillåta,neka
Tillåta från alla
Kräver alla beviljade
</Katalog>

 

Du kan alltid prova en annan divoti, till exempel för att byta namn på mappen phpmyadmin något annat och inte alias till. Men det är fult och inte mycket meningsfull 🙂

p. s frågade mig varför jag använder XAMPP och inte ren installation av alla komponenter som det är min Debian föddes – svaret är väldigt enkelt – LÄTTJA. Mig för lat för att skriva flera kommandon då få konfovete etc.. Ganska lätt är ta din hela flocken razarhiviraš och ljus 😉

Förstärkt av Zemanta

Debian OpenLogo

Миналия ден един приятел ми писа че имал проблем с Debians 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');

Förstärkt av Zemanta

Idag kommer vi att prata om din elände om en server med Suhosin patch och hur Debians Sqeeze deal med honom. Nu låt oss börja lite avstånd. När du installerar php i paketsystemet av Debian (stabila för de andra, jag kan inte säga hur det är mer) Du måste installera suhosin och mod till det.. Jag hade problem med systemets ply-skriven i php och jag tog beslutet för kardinalnoto att göra felsökning program på systemet och att rapportera tillbaka till utvecklaren att få plåstret för säkerhet och på så sätt bespara mig huvudvärk. Generellt kan jag säga djärvt att detta var ett av de mest dåraktiga beslut någonsin tagit mig. Nästa ångra snap-on php5-suhosin återställa en web-server och oops helljus – a-patch är fortfarande laddad. Efter en mycket kort enkät upptäckt, paketet sammanställs och med Pacha direkt i koden vilket innebär att den inte inaktivera eller ta bort om du prekompilira koden på nytt utan jordnötter. Besluta att du kommer att dr″pna och prekompiliram på deb-paketet. Har gjort gör du apt-get källa php5 dra mig detta Källkod, razpaketirva och så vidare. Här den perfekta idén att hämta Sorsa av för att ta bort jordnötterna och kompilera det igen till debianski paketet plus en två små optimeringar för att sammanställa. Sagt och gjort – Jag har tagit bort bilden från patch Debian/Patches/suhosin.patch Jag har tagit bort honom inte att spela Debian/patches/serie. Här allt tydligt och utan problem. Jag kör sedan för att kompilera om paketet med debuild och som jag förväntat min POPs sammanställning på grund av saknade headers. Naturligtvis kommer det finnas sådan brist – Jag är med debian netinstall. Fixa din dumhet som är riktigt snabb släppa igen sammanställning, på en punkt premiärminister igen bara, Det är en konstig bugg i Zend / zend_stream. h eller c minns inte exakt (Om affären kan senare för att kolla exakt vilken fil och vilken linje pratade jag med). Efter en nedoumâvane vad som händer och varför helveten kan mullra i Zend Core – var inte tänkt att mullra på för ingen anledning och en något längre studie upptäckta att problemet är relativt sällsynta och inte en massa signaler för honom. Jag misstänker att någon av patchar i källan är fel men nu har jag inga nerver att verifiera. Hmmmmm konstiga Super konstigt. Jag beslutat nästan att sammanställa ren php men jag bestämde mig att prova speglarna dotdeb Låt oss se vad kommer att hända där. Sammanställning där dog på grund av några konstiga beroenden men slätade över problemen i huvuddelen. Vilket i sin tur är förståeligt var de borta 30-40 fläckar som fanns i stabil paketet. Efter flera långa och misslyckade försök som jag ryckte jag hämtade vanilj paketet och sammanställt det med nästan debian-ski alternativ med idén att skriva om min nuvarande installation och installera nya paket från fågelbordet kan du ha beteende av package installerat från databasen (förmodligen bara en annan obosobno inte kloka beslut). Som förväntat utan fläckar gick installationen smidigt. Detta är resultatet av min config fil 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]"

Denna konfiguration är liknande till det av sammanställa dotdeb. Като основаното и най важно е prefix опцията където ще се разполагат файловете с библиотеките на php. Него както и другите пъти ги коригирайте според вашата система така че да не се усети компилацията с промяна на пътищата.

Förstärkt av Zemanta

Vector logo of the PHP programming language wi...

Днес ще драсна едно леко четиво за php cache den 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 това си е ваше решение. Накрая изчистваме и прекратяваме кеширането. Съвсем тривиална операция ако да речем геенрирането на кеша минава през огромни блокове от код така можем да спестим доста процесорно време като кешираме за известно време или за една сесия. Вече всичко опира то това какво искате дали да е общодостъпен кеша или да е достъпен за различен потребител.

Förstärkt av Zemanta