O 2 tednov php 5.3 šel dol v zgodovini počasi, a zanesljivo. 11. napovedal konec svoje vsebine in da bodo objavljeni le varnostne posodobitve za 1 leto. Večinoma PHP 5.4 poteka v fazah in stare stabilno PHP 5.5 je stabilna, to je bilo malo smešno, ker je drugi del dodatkov in vtičnikov s php ne deluje povsem prav, vendar, in različico 5.5 dokaj nova, tako da se bom vzdržala dogaja se.

Oh, kaj je govoril o migracijah, da se me 5.4 iz 5.3. Je že objavil informacije za nezaželeno funkcije, tisti, ki so se spremenili, spremenili, in tiste, ki niso več podprte, tako da smo brez drame, in na obeh straneh, če bodo spali, ali ne 😉 Th zjutraj selitve o 7 kot je postalo, ob minimalno bolečino med selitvijo če ne opravi gladko. Na moje veliko presenečenje, je šlo vse bolj gladko kot – sestavi svojo PHP 5.4.17 Začel sem apache-je in nebo je vse, kar. Hiter pogled po prijavi ni zagrmelo depricated ali celo neznane funkcije – zdi se, da so fantje naredili dobro delo. Potem sem lahko samo precompiler pritrjena in deluje z old API, kot APC, RAR in drugih. Drugi znova in vse spala. Pričakujem, izboljšave v učinkovitosti, kot povsod ljudje točke s palcem, na stojnicah, kjer je prikazano, kako PHP 5.4 porabi manj POMNILNIKA in zaženete skripte hitrejše.

Pred nekaj dnevi je prišla ven XAMPP 1.8.0 včeraj po nadgradnji različice 1.7.7 Imam precej zanimiv problem. Phpmyadmin ne odpre, I valjani z 403

Dostop prepovedano!


Novo XAMPP varnostni koncept:

Dostop do zahtevanega predmeta je na voljo samo iz lokalnega omrežja.

To nastavitev lahko nastavite v datoteki “httpd-xampp.Potrdi pošilj”.

Takoj sem odprl httpd-xampp.conf, ki sem je v /opt/lampp/etc/extra/, na prvi pogled vse, kar izgleda v redu. Pravila za LAN je bil v REDU. Skupaj z odpiranje lokalnih. WTF ??? Pogledal dnevnik in vidim, da moje dostop je bila odrezana od konfiguratuta. Zdaj je vse, kar sem ahaha in, odkrito povedano, malo sreče, sem našel problem. След като преглеждах httpd.conf-а видях в Allow/Deny клаузите един последен ред Zahtevajo, da vse odobrene. O Eureka!. To je nov nadzorni mehanizem, ki je vključen v apache 2.4.x. Z njim ne daje dostop do ali opustitev teh zahteva,, v bistvu posnema Omogočite/onemogočite funkcije :). За да поправим проблема добавяме Require all granted в директивите за папката /opt/lampp/phpmyadmin. Po spreminjanje mojega izgleda tako

<Imenik “/opt/lampp/phpmyadmin”>
AllowOverride AuthConfig Omejitev
Da bi omogočajo,prepoved
Dovolite vse
Zahtevajo, da vse odobrene
</Imenik>

 

Čeprav je res, lahko poskusite z drugo divje, na primer, če želite preimenovati phpmyadmin mapo na nekaj drugega in ne naziv. Ampak to je grda in ni posebej pomemben 🙂

str.s Vprašal me je, zakaj sem uporabite XAMPP namesto čisto namestitev vseh sestavnih delov, in ki je, moj Debian bil rojen – отговорът е много много простМЪРЗЕЛ. Мързи ме да напиша няколко команди после да си пипна конфовете и прочие. Доста по лесно е сваляш целия пакет разархивираш и палиш 😉

Okrepljeno z 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');

Okrepljeno z Zemanta

Bom danes povedal o težave po enem strežniku Suhosin obliž in kako Debian Sqeeze ukvarjajo z njim,. Zdaj pa začnimo malo od daleč. Ko namestite php v sistem Debian (stabilen za druge ne vem, kako je drugje) prepričajte, da ste za namestitev suhosin mod, da je. Imel sem težave z eno PLU-kadyra sistem napisan v php, in sem vzel cardinalate rešitev, namesto da delaš za odpravljanje napak sistema in poroča razvijalec za javnost popravek za varnostno shranjevanje glavoboli. Na Splošno, lahko mirno rečem, da je bila to ena od najbolj neumna odločitev, kdaj. Najprej izbrišite modul php5-suhosin ponovno zaženite spletni strežnik-a in paket žarek – patch-a še vedno naložen. Po zelo kratek pregled iskanje, paket združuje in vodi neposredno v kodo, ki pomeni, da ni onemogoči ali odstrani, če ne boste morali ponovno prevajanje kode spet brez popravkov. Odločite, kaj boste gryppa in precompilers v deb paket. Končano je dejal naredil jaz bi apt-get source php5 potegnite moja trenutna izvorna koda, ustrezno in drugih. Tukaj je moj odlična ideja, da prenesete izvorno kodo paketa, odstranite obliž in prevesti datoteko spet v paket, plus dva majhna optimizacije pri pripravi. Dejal je bila opravljena dejanja – Sem odstranil nepotrebne obliž debian/patches/suhosin.obliž Sem ga odstranili, in da ne igrajo debian/patches/serije. Tukaj je vse jasno in brez težav. Nato vnesem paket s debuild in kot sem pričakoval, moj zaloputnil graditi, ker manjka izvorno kodo. Seveda, da ne bi bilo tako napak – vendar pa, jaz sem z debian netinstall. Obnova delov v naglici, da njegova norost ponovno za javnost zbirk, na eni točki spet Premier samo, kaj je s čudno napaka v Zend/zend_stream.h ali .c ne spomnim se točno (če pridem pozno če želite preveriti, katere datoteke in linijo, ki je zvenel). Po nedoumevala, kaj se dogaja in zakaj za vraga hum jedro Zend – če bi buzz iz katerega koli razloga in malo dolgo raziskava je pokazala, da je ta problem je relativno redka in ne zelo signali za njega. Sumim, da vse popravke v kodi, ne tako, ampak sedaj imam živce, da si ga ogledate. Hmmmmm čudno, čudno super. Skoraj odločil prevesti php, vendar sem se odločil, da poskusite ogledalo dotdeb poglejmo, kaj se bo zgodilo. Tam projekta je umrl zaradi čuden odvisnosti, vendar med težav v glavni del. Da, v zameno, jih razumeli, so 30-40 popravke, ki so bili v stabilno paket. Po dolgi in neuspešnih poskusih sem se naveličal in izklopljen paketa in se je pripravljen z skoraj debian-ski možnosti z idejo, da bi reportaža moja trenutna nastavitev in namestitev novih paketov z vložitvijo lahko vedenje, paket iz skladišča (verjetno ne obosobeni razumno rešitev). Kot sem pričakoval, ne vsi, obliži, montaža pa je potekala tekoče. Je output config.lepo moje datoteke:

#! /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]"

Ta konfiguracija je blizu ta zbirka dotdeb. Като основаното и най важно е prefix опцията където ще се разполагат файловете с библиотеките на php. Него както и другите пъти ги коригирайте според вашата система така че да не се усети компилацията с промяна на пътищата.

Okrepljeno z Zemanta

Vector logo of the PHP programming language wi...

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

Okrepljeno z Zemanta