מכ 2 שבועות php 5.3 הוא נכנס לסיפור לאט אבל בטוח. ב -11 הם הודיעו על סיום התחזוקה שלו וכי יושמו תיקוני אבטחה רק עבור 1 שנה. בעיקרון PHP 5.4 הולך יציבה PHP הישן בשלבים 5.5 הופך יציב, וזה פחות כיף, כי עדיין חלק תוספות ותוספות php חדשות לא עובד בצורה נכונה למדי אבל את הגרסה 5.5 זה די חדש אז אני אמנע הגירה אליה.

אז בואו נגיד לי הגירה 5.4 מ 5.3. שמתי בעבר מידע עבור פונקציות מיושנות, אלה השתנו באופן דראמטי ומי לא יישמר עוד בלי שום דרמות משני הצדדים כי לא יציתו או 😉 אז עיתוי הבוקר של תחילת הגירה סביב 7 להיות, כי יש כאב מינימלי במהלך הנדידה אם לא ללכת בצורה חלקה. להפתעתי הרבה, הכל הלך בצורה חלקה יותר – הידור PHP שלך 5.4.17 התחלתי אותו אפאצ'י-אלהים אדירים הכל נמצא שם. מבט מהיר מסביב היומנים יהיה לשאוג של פונקציות הוצאו משימוש או בכלל לא ידוע – כמובן החבר'ה עשו את עבודתם היטב. אחר כך הייתי פשוט להדר מחדש ותוספים כי מופקים עם ה- API הישן כמו APC, RAR ו אחר. אתחול מחדש והכל שנית נרדמו. מלבד לצפות לשיפור בפריון כמו אנשים בכל מקום הצבעת בוהן טבליות כמה שבו מראה כיצד PHP 5.4 צורכת פחות זיכרון RAM ומבצע סקריפטים מהר.

ימים ספורים החוצה XAMPP 1.8.0 אתמול לאחר שדרוג מגירסה 1.7.7 היה לי די בעיה מעניינת. PhpMyAdmin-והוא לא נפתח ושאג 403

כניסה אסורה!


תפיסת הביטחון XAMPP חדש:

הגישה אל האובייקט המבוקש זמינה רק מהרשת המקומית.

הגדרה זו יכולה להיות מוגדרת בקובץ “httpd-xampp.conf”.

מיד פתחה httpd-xampp.conf אשר לי הוא ב / opt / lampp / etc / תוספת /, במבט ראשון הכל נראה בסדר. כללי רשת מקומית נמנו. מלבד localhost הפתיחה. WTF ??? הסתכלתי ביומן-ואראה כי הגישה שלי נחתכה על ידי konfiguatsiyata. הנה עכשיו מה התנשפתי ולמען האמת קצת פחות מזל מצא את הבעיה. След като преглеждах httpd.conf-а видях в Allow/Deny клаузите един последен ред דרוש כל שהוענק. אה יוריקה. זהו מנגנון בקרה חדש שנכנס 2.4.x Apache. זה נותן גישה או סירוב כל קנס כזה, בעצם מוחק מותר / אסור פונקציונלי :). За да поправим проблема добавяме Require all granted в директивите за папката /opt/lampp/phpmyadmin. לאחר השינויים בי נראה כמו

<מַדרִיך “/opt / lampp / phpmyadmin”>
AllowOverride AuthConfig הגבל
להזמין לאפשר,לְהַכּחִישׁ
אפשר מכל
דרוש כל שהוענק
</מַדרִיך>

 

Viangi יכול לנסות פרוע אחר, למשל, כדי לשנות את שם משהו התיקייה phpmyadmin אחר ולא כינוי. אבל זה מכוער ולא מאוד משמעותי 🙂

נ.ב הם שאלו אותי למה אני משתמש XAMPP לא התקנה נקיה של כל המרכיבים כמו אותם זה דביאן שנולדו – отговорът е много много простМЪРЗЕЛ. Мързи ме да напиша няколко команди после да си пипна конфовете и прочие. Доста по лесно е сваляш целия пакет разархивираш и палиш 😉

משופר על ידי Zemanta

Debian OpenLogo

Миналия ден един приятел ми писа че имал проблем с דביאן 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. Аз лично предпочитам втория вариант. Доста по чист е като цяло но има и недостатъкако се презапише файлът промените ни ще се изгубят което си е неприятен факт.

נ.ב.. Сега като се замисля вероятно ако се дефинира друго място където да се съхранява сеиината информация чрез самото 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

היום אני מדבר על צרותיה סביב שרת יחיד עם Suhosin תיקון וכיצד דביאן עסקת Sqeeze עם זה. עכשיו אנחנו מתחילים במרחק קטן. בעת התקנת php במערכת החבילות של דביאן (עבור אחרים יציבים אני לא יכול להגיד איך עדיין) עליך להתקין Suhosin mod אליו. היה לי בעיות עם כמה מערכת MAH מסגרת שנכתבה ב- PHP והחליט הקרדינל במקום לעשות באגים במערכת ומפתח דווח לראש לאבד תיקוני אבטחה ובכך לחסוך לעצמי את הטרחה. באופן כללי אני יכול לומר באומץ כי זה היה אחת ההחלטות הטפשות ביותר אי פעם לקחתי. בשעה מודול להסיר הראשון PHP5-האינטרנט מחדש Suhosin-בשרת ופוסט אופס – תיקון- a הוא עדיין טעון. לאחר מחקר קצר למצוא, כי החבילה היא הידור טרואה ישירות בקוד כלומר אין החרגה או הסרה אלא להדר מחדש את הקוד שוב ללא תיקון. לפתור אשר drapna והדר מחדש כדי חבילת deb. בוצע אמר מוקדם לעשות apt-get מקור PHP5 שלך מושך אותי קוד מקור זה, razpaketirva וכו. הנה הרעיון האידיאלי שלי להסיר את מקור החבילה להסיר את התיקון ולעבד אותו בחזרה את חבילת דביאן ועוד שתיים אחד אופטימיזציות קטן הידור. אמר גמר – לחסל תיקון מיותר של debian / טלאים / suhosin.patch הוצאתי ממנו לשחק ב debian / טלאים / סדרה. עד כה הכל ברור וללא בעיות. לאחר מכן הפעל לקמפל חבילה debuild וכפי שציפיתי נשפתי אוסף בגלל כותרות חסרות. באופן טבעי יהיה שום מחסור – אני עדיין עם התקנת רשת דביאן. טיפשות תיקון מהיר לרוץ שוב הידור, בשלב מסוים להתעלף רק שוב, כי עם שגיאה מוזרה ב Zend / zend_stream.h או .c לא זוכר בדיוק (אם אני יכול להתמודד אחר כך לבדוק בדיוק איזה קובץ וקו הרעם). אחרי להטיל ספק מה קורה ולמה לעזאזל יכול לטרטר של ליבת Zend – במקום שאמור לטרטר מכל סיבה שהיא וכן מחקר קצת יותר זמן למצוא כי בעיה זו היא נדירה יחסית ולא הרבה סימנים לכך. אני חושד שאחד הטלאים במקור לא בסדר אבל אין לי עצבים כדי לבדוק את זה. המממ מוזר למוזר במיוחד. כמעט החלטתי ללקט 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