დაახლოებით 2 php კვირის 5.3 იგი შედის ამბავი ნელა, მაგრამ აუცილებლად. 11 მათ გამოაცხადეს, ბოლოს მისი შენარჩუნება და რომ დაიდება მხოლოდ უსაფრთხოების წერთ 1 წელი. ძირითადად PHP 5.4 მიდის ეტაპობრივად ძველი სტაბილური და PHP 5.5 სტაბილური გახდება, რომელიც ნაკლებია fun, რადგან ჯერ კიდევ ნაწილი დამატებები და ახალი php plugins არ მუშაობს სწორად მაგრამ ვერსია 5.5 ეს არის საკმაოდ ახალი, ასე რომ თავს შევიკავებ მიგრაციის მას.

ასე ვთქვათ, ჩემთვის მიგრაციის 5.4 საწყისი 5.3. მე ადრე დააყენა ინფორმაცია მოძველებული ფუნქციები, ის, რომ შეიცვალა და ვინც აღარ იქნება შენარჩუნებული არ დრამები ორივე მხარეს, რომელიც არ ignite ან 😉 ასე რომ, ამ დილით დროის დაწყების მიგრაციის გარშემო 7 ხდება, რომ არ მინიმალური ტკივილი მიგრაციის დროს თუ არა წასვლა შეუფერხებლად. ჩემდა გასაკვირად, ყველაფერი უფრო შეუფერხებლად – შედგენილი თქვენი PHP 5.4.17 დავიწყე და apache-oh ზეცას ყველაფერი არსებობს. სწრაფი შეხედვით გარშემო მორების roar of depricated ან საერთოდ არ უცნობი ფუნქციები – ცხადია, ბიჭები არ კეთდება თავის საქმეს კარგად. მერე მხოლოდ recompile და დამატებების, რომ შედგენილი ძველი API როგორც APC, RAR და სხვა. მეორე გადატვირთვისას და ყველაფერი დაეცა ეძინა. გარდა ველით გაუმჯობესების პროდუქტიულობა, როგორც ადამიანი ყველგან მიუთითებს დიდი toe ზოგიერთი დაფები, სადაც ჩანს, თუ როგორ PHP 5.4 მოიხმარს ნაკლებ RAM და ახორციელებს სკრიპტები სწრაფად.

რამდენიმე დღის out XAMPP 1.8.0 გუშინ განახლება მობილური 1.7.7 მე მქონდა საკმაოდ საინტერესო პრობლემაა. Phpmyadmin და მას არ გახსნა და ტაშს ერთად 403

წვდომა აკრძალულია!


New XAMPP უსაფრთხოების კონცეფცია:

თხოვნის ობიექტი ხელმისაწვდომია მხოლოდ ადგილობრივი ქსელის.

ეს პარამეტრი შეიძლება კონფიგურაცია ფაილი “httpd-xampp.conf”.

მაშინვე გახსნა httpd-xampp.conf რომელიც ჩემთვის არის / opt / lampp / etc / დამატებითი /, ერთი შეხედვით ყველაფერი ჩანდა ჯარიმა. წესები ადგილობრივი ქსელის შორის იყვნენ. გარდა გახსნის localhost. WTF ??? შევხედე შესვლა და ვხედავ, რომ ჩემი წვდომა შეწყვიტა მიერ konfiguatsiyata. აქ არის ის, რაც მე gasped და გულწრფელად შედარებით ნაკლებად წარმატებას ნაპოვნი პრობლემა. След като преглеждах httpd.conf-а видях в Allow/Deny клаузите един последен ред მოითხოვს ყველა მიანიჭა. Oh eureka. ეს არის ახალი კონტროლის მექანიზმი, რომელიც შევიდა apache 2.4.x. იგი იძლევა წვდომის ან უარის თქმის რაიმე ასეთი ჯარიმა, ძირითადად mimics ნება / უარყოფენ ფუნქცია :). За да поправим проблема добавяме Require all granted в директивите за папката /opt/lampp/phpmyadmin. ცვლილებების შემდეგ ჩემთვის ჰგავს

<დირექტორია “/opt / lampp / phpmyadmin”>
AllowOverride AuthConfig Limit
რათა დაუშვას,უარყოფს
ნება ყველა
მოითხოვს ყველა მიანიჭა
</დირექტორია>

 

Viangi შეგიძლიათ სცადოთ სხვა ველური, მაგალითად, გადარქმევა საქაღალდეში phpmyadmin რაღაც და არ alias to. მაგრამ ეს მახინჯი და არ არის ძალიან მნიშვნელოვანი 🙂

p.s მკითხეს, თუ რატომ გამოვიყენო XAMPP არის სუფთა ინსტალაცია ყველა კომპონენტი, როგორც მათ ჩემი Debian დაიბადა – отговорът е много много простМЪРЗЕЛ. Мързи ме да напиша няколко команди после да си пипна конфовете и прочие. Доста по лесно е сваляш целия пакет разархивираш и палиш 😉

გაუმჯობესებულია 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');

გაუმჯობესებულია Zemanta

დღეს მე ლაპარაკი woes გარშემო ერთ სერვერზე Suhosin patch და როგორ Debian Sqeeze გარიგება. ახლა ვიწყებთ პატარა მანძილი. როდესაც თქვენ დააყენოთ php წელს Debian შეფუთვა სისტემა (სტაბილური სხვა მე ვერ გეტყვით, რამდენად ჯერ) თქვენ უნდა დააყენოთ და suhosin mod მას. მე მქონდა პრობლემები ზოგიერთი MAH ჩარჩო სისტემა დაწერილი PHP და აიღო კარდინალური გადაწყვეტილება ნაცვლად, რომ გავაკეთოთ გამართვის სისტემა და უკან დეველოპერი დასაკარგი უსაფრთხოების პატჩები და ამით გადარჩენა თავს უბედურება. საერთო თამამად შემიძლია ვთქვა, რომ ეს იყო ერთ-ერთი ყველაზე სულელური გადაწყვეტილებები მე ოდესმე მიღებული. თავდაპირველად ამოიღონ მოდული PHP5-suhosin გადატვირთვა ვებ სერვერზე-a და oops პოსტი – patch-a კვლავ დატვირთული. ხანმოკლე სასწავლო იპოვოს, რომ პაკეტი ჯამდება და trots პირდაპირ კოდი, რაც იმას ნიშნავს, რომ არ გამორიცხვა ან მოხსნა თუ recompile კოდი ერთხელ გარეშე patch. მოგვარება, რომელიც drapna და recompile დებისთან პაკეტი. შესრულებულია ადრე განაცხადა, რომ თქვენი apt-get წყარო php5 უბიძგებენ ჩემთვის ეს კოდის, razpaketirva და ა.შ.. აქ ჩემი იდეალური იდეა ამოიღონ წყარო პაკეტი ამოიღონ პატჩი და კომპილირება უკან Debian პაკეტი პლუს ერთი ორი პატარა ოპტიმიზაციით შედგენაში. განაცხადა გაკეთდეს – აღმოფხვრას ზედმეტი პატჩი debian / წერთ / suhosin.patch მე ამოღებულ მას თამაშობენ debian / წერთ / სერია. ჯერჯერობით ყველაფერი ნათლად და უპრობლემოდ. მაშინ აწარმოებს კომპილაციის პაკეტი debuild და როგორც მოსალოდნელია, მე ააფეთქეს კოლექცია რადგან დაკარგული headers. ბუნებრივია, არ იქნება რაიმე დეფიციტს – მე ჯერ კიდევ ერთად debian netinstall. გადავწყვიტოთ სისულელე აწარმოებს ერთხელ კოლექცია, ერთ მომენტში მხოლოდ სუსტი ერთხელ, რომ უცნაური შეცდომა Zend / zend_stream.h და გ არ მახსოვს ზუსტად (თუ შემიძლია გაუმკლავდეთ შემდეგ შეამოწმოთ ზუსტად, რომელიც ფაილი და ხაზი ქუხილი). მას შემდეგ, რაც ზოგ რა ხდება და რატომ ჯოჯოხეთი შეიძლება rumble საქართველოს Zend ძირითადი – სადაც ეს უნდა rumble ნებისმიერი მიზეზით და პატარა აღარ შესწავლა, რომ ეს პრობლემა შედარებით იშვიათია და არა ბევრი ნიშნები. ეჭვი მაქვს, რომ ერთ-ერთი წერთ წყარო იყო არასწორი, მაგრამ მე არ მაქვს ნერვები შეამოწმეთ იგი. Hmmmmm უცნაური სუპერ უცნაური. თითქმის გადავწყვიტე შედგენა სუფთა php მაგრამ გადავწყვიტე სარკეები dotdeb იქ ვნახოთ, რა მოხდება. არსებობს კოლექცია გარდაიცვალა, რადგან რაღაც უცნაური დამღუპველი მაგრამ იხსნა პრობლემების ძირითად. რაც, თავის მხრივ, გასაგებია, რომ მათ გააკეთეს მათ 30-40 წერთ, რომლებიც სტაბილური პაკეტი. მას შემდეგ, რაც რამდენიმე ხნის და წარუმატებელი მცდელობა დავიღალე და გამორთულია ჩემი ვანილის პაკეტი და კომპილირება თითქმის 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. Него както и другите пъти ги коригирайте според вашата система така че да не се усети компилацията с промяна на пътищата.

გაუმჯობესებულია 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 това си е ваше решение. Накрая изчистваме и прекратяваме кеширането. Съвсем тривиална операция ако да речем геенрирането на кеша минава през огромни блокове от код така можем да спестим доста процесорно време като кешираме за известно време или за една сесия. Вече всичко опира то това какво искате дали да е общодостъпен кеша или да е достъпен за различен потребител.

გაუმჯობესებულია Zemanta