Մոտ 2 շաբաթ php 5.3 պատմության մեջ մտել է դանդաղ, բայց, անշուշտ,. 11-ին հայտարարել են, որ ավարտին է դրա բովանդակությունը եւ որ կտեղակայվեն միայն անվտանգության թարմացումներ ընթացքում 1 տարի. Հիմնականում PHP 5.4 ընթանում է փուլերում old stable և PHP 5.5 խոսքը stable, որ մի քիչ զվարճալի, քանի որ դեռ մասը լրացումներ եւ plug-ins php աշխատում է ոչ այնքան ճիշտ է, բայց և տարբերակը 5.5 բավական նոր, այնպես որ պետք է ձեռնպահ մնալ անցնելու նրա.

Օյ, եկեք խոսել արտագաղթի մասին ինձ" 5.4 են 5.3. Նախապես տեղադրվել է տեղեկատվություն ժամկետանց գործառույթների, այնպիսիք, որոնք փոխվել են, փոխվել են, եւ այնպիսիք, որոնք արդեն չեն աջակցում, որպեսզի մենք չունենք դրամա, եւ երկու կողմերից էլ, եթե այրել, կամ չի 😉 Ին այսօր առավոտյան ընտրել ժամանակն է սկսել միգրացիայի շուրջ 7 ինչպես հայտնի է դարձել, որ է ունենալ նվազագույն ցավի դեպքում միգրացիայի եթե չի անցնի հարթ. Իմ մեծ անակնկալ է, ամեն ինչ անցել է ավելի քան սահուն – компилируется ձեր PHP 5.4.17 ես սկսում apache-այս մասին երկնքում ամեն ինչ կա. Հայացք շուրջ տեղեկամատյանները չի բղավել depricated կամ ընդհանրապես անհայտ գործառույթների – երեւում է, տղաները կատարել իր աշխատանքը լավ է. Այն ժամանակ ինձ մնացել է միայն прекомпилирам և կցված որոնք հավաքում է հին API, ինչպիսիք են APC, RAR և այլ. Երկրորդ վերսկսել, եւ բոլորը քնած էին. Առանձին-առանձին: "ես ակնկալում եմ բարելավումներ կատարումը, քանի որ ամենուր մարդիկ ցույց են տալիս, մեծ մատը, այն դարակներ, որտեղ նա ցույց է տալիս, թե ինչպես է PHP 5.4 սպառում է ավելի քիչ ՀԻՇՈՂՈՒԹՅՈՒՆ է եւ ավելի արագ կատարել սցենարներ.

Մի քանի օր առաջ դուրս է եկել Ծրագրի xampp 1.8.0 երեկ թարմացման տարբերակ 1.7.7 ինձ շատ հետաքրքիր խնդիր է. Phpmyadmin-չի բացվել, և ես покатился հետ 403

Access forbidden!


New XAMPP security առաջընթացը:

Access to the requested օբյեկտի is only available from the local network.

This setting can be configured in the file “httpd-xampp.հակամարտութ”.

Անմիջապես ես բացեցի httpd-xampp.conf ով ինձ մոտ է գտնվում /opt/lampp/etc/extra/, առաջին հայացքից ամեն ինչ նորմալ է. Կանոնները համար լոկալ ցանցում կարգով. Հետ մեկտեղ բացման տեղական. WTF ??? Նայեցի log-իսկ ես նայում, որ իմ մուտք է եղել отрезан է конфигуацията. Ահա հիմա բոլորը ինձ ахнаха եւ, անկեղծ ասած, մի փոքր հաջողություն, ես գտա խնդիրը. След като преглеждах httpd.conf-а видях в Allow/Deny клаузите един последен ред Require all granted. Մասին էվրիկա!. Սա նոր վերահսկողության մեխանիզմը, որը ներառում է apache 2.4.x. Հետ չեն տալիս մուտք գործել կամ հրաժարում նման անհրաժեշտ, հիմնականում նմանակող Լուծել/Արգելել ֆունկցիոնալ :). За да поправим проблема добавяме Require all granted в директивите за папката /opt/lampp/phpmyadmin. Հետո փոփոխություններ են ինձ նայում, այնքան

<Կատալոգ “/opt/lampp/phpmyadmin”>
AllowOverride AuthConfig Սահմանափակել
Order allow,արգելել
Allow from all
Require all granted
</Կատալոգ>

 

Թեեւ դա ճիշտ է, կարող եք փորձել և այլ վայրի, օրինակ, որպեսզի վերանվանել թղթապանակը phpmyadmin ինչ-որ բան այլ է, եւ անել alias ոչ. Բայց դա տգեղ է եւ հատկապես կարեւոր է 🙂

p.s Հարցնում էին ինձ, թե ինչու եմ օգտագործում են XAMPP, այլ ոչ թե մաքուր տեղադրել բոլոր բաղադրիչների, իսկ նրանց իմ Debian ծնվել – отговорът е много много простМЪРЗЕЛ. Мързи ме да напиша няколко команди после да си пипна конфовете и прочие. Доста по лесно е сваляш целия пакет разархивираш и палиш 😉

Ընդլայնված by 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');

Ընդլայնված by Zemanta

Այսօր ես պատմել ձեզ իրադարձություններում շուրջ մեկ սերվերի հետ Suhosin թիզ, եւ ինչպես է "Debian Sqeeze զբաղվել դրանով. Հիմա սկսենք մի քիչ հեռվից. Երբ եք տեղադրել php իսկ համակարգի Debian (կայուն է, այլ ես չգիտեմ, թե ինչպես) անպայման դուք պետք է տեղադրել suhosin պն նրան. Ինձ դուր է գալիս մեկ плу-кадърно համակարգը գրված php, եւ ես էլ кардиналното որոշումը անելու փոխարեն կարգաբերում համակարգի և հակառակը հաշվետվությունում մշակողի, որ թողարկել կարկատել անվտանգության համար, որպեսզի հավաքել գլխացավ. Ընդհանուր առմամբ, ես կարող եմ համարձակորեն ասել, որ սա մեկն է առավել հիմար որոշումներ, երբեւէ. Նախ հեռացնել մոդուլ php5-suhosin վերսկսել web server-a և փաթեթավորում լուչ – patch-a դեռ բեռնվում. Հետո շատ կարճ ակնարկ գտնել, որ փաթեթը компилируется եւ несется հենց կոդ է, որը նշանակում է, որ ոչ մի համր, կամ հեռացնել, եթե դուք չեք recompile կոդ նորից առանց կարկատել. Որոշեք, որ դուք պետք է նրա дръппа եւ прекомпилирам է դեբյուտանտ փաթեթը. Կատարվել ասված է անել, ես անում եմ իրեն apt-get source php5 քաշում իմ ընթացիկ կոդը, разпакетирва եւ այլ. Ահա իմ իդեալական գաղափար է բեռնել ելակետային կոդը փաթեթի հեռացնել patch եւ նրա recompile կրկին ֆայլերի փաթեթը գումարած երկու փոքր օպտիմալացման կազմելիս. Կատարվել ասված է արվել – ես վերացրել ավելորդ կարկատել է debian/patches/suhosin.patch ես վերացրել է այն, այլ ոչ թե խաղալ debian/patches/series. Այստեղ ամեն ինչ հստակ է, եւ առանց խնդիրների. Ապա ես կազմում փաթեթը debuild եւ քանի որ ես սպասում էի իմ захлопнулась հավաքների պատճառով բացակայող ելակետային տեքստերի. Բնական է, որ այդպիսի ձախողումները – այնուամենայնիվ, ես debian netinstall. Վերականգնման մանրամասները հապշտապ հիմարություն է այն թողարկել նորից կոմպիլացիա, մի պահ նորից премира միայն, որ տարօրինակ սխալներ Zend/zend_stream.h կամ .c չեմ հիշում հաստատ (եթե ես զբաղվել հնարավոր է ուշ, որպեսզի ստուգեք, թե որ ֆայլի և ինչ տողում հնչում էր). Որոշ недоумяване, թե ինչ է կատարվում, և ինչու՞, գրողը տանի դղրդյուն միջուկ Zend – որտեղ էլ չի դղրդյուն ցանկացած պատճառով եւ մի քիչ երկար հետազոտությունների հայտնաբերել է, որ այս խնդիրը հանդիսանում է համեմատաբար հազվադեպ և շատ ազդանշանները համար. Կասկածում եմ, որ ցանկացած տեղ-տեղ կոդը ոչ այնքան, բայց հիմա ես նյարդերը, ստուգել նրա. Хммммм տարօրինակ է super տարօրինակ է. Գրեթե որոշել է recompile մաքուր php, բայց ես որոշեցի փորձել հայելիներ dotdeb տեսնենք, թե ինչ է այնտեղ տեղի կունենա. Այնտեղ նախագիծը մահացել է տարօրինակ հակումներ, բայց խնդիրների հիմնական մասի. Որ, իր հերթին, հասկանում է նրանց, նրանք 30-40 patches, որոնք կայուն փաթեթը. Հետո երկար եւ անհաջող փորձերից ինձ հոգնեցրել է եւ անջատեց փաթեթի և նրա компилируется գրեթե debian-ски տարբերակներ այն մտքի հետ, որ վերաշարադրել իմ ընթացիկ տեղադրում եւ ստեղծել նոր փաթեթներ ներկայացման կարող են լինել վարքագծի, փաթեթ է репозитория (հավանական է, դեռ չեն обособно ողջամիտ որոշումը). Ինչպես ես սպասում, բոլոր տեղ-տեղ, տեղադրում հարթ է անցել. Այս եզրակացության են հանգել 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]"

Այս կազմաձեւման մոտ է: այս մասին հայտարարել է dotdeb. Като основаното и най важно е prefix опцията където ще се разполагат файловете с библиотеките на php. Него както и другите пъти ги коригирайте според вашата система така че да не се усети компилацията с промяна на пътищата.

Ընդլայնված by Zemanta

Vector logo of the PHP programming language wi...

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

Ընդլայնված by Zemanta