Перейти к собственно контенту

AgR^ Live Blog

Общественные записки не поддающиеся вкуриванию…

Архив

Рубрика: PHP

В связи с окончанием поддержки php53 на FreeBSD, решил переехать на php55, при этом перескачив ветку php54.
Приступим....

1. Запускаем обновление:
portmaster -o lang/php55 lang/php53
2. сохраняем и (или) распечатываем файл подключаемых модулей - /usr/local/etc/php/extensions.ini , тк он нам ещё понадобится.
3. Удаляем ВСЕ модули начинающиеся с php53-########
pkg delete -f php53-########
...
...
...
pkg delete -f php53-########
и
удаляем также модули начинающиеся с pecl-####### , ессно предварительно сохранив их список (pkg version -v | grep pecl >> ext.txt)
pkg delete -f pecl-#######
...
pkg delete -f pecl-#######

4. Устанавливаем расширения:
cd /usr/ports/lang/php55-extensions
make config
И выбираем все те модули которые находились у нас в файле /usr/local/etc/php/extensions.ini
Жмём ОК и далее:
make install clean

Устанавливаем из портов pecl-####### модули, которые удалили.
5. И напоследок, на всякий случай, а вдруг что то зависящее забыли пересобрать:
portmaster -R -r php55-5.5.18

и оказались правы. Пересобралось ещё с десяток зависящих портов.

6. Проверяем:
php -v
должно вывести информацию о php без вывода ошибок:
-
PHP 5.5.18 (cli) (built: Oct 28 2014 09:08:34)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies
-
И ещё так, чисто для профилактики - проверка всех библиотек:
pkg check -Ba

7. Устанавливаем модуль php для apache, тк его вынесли отдельно:
cd /usr/ports/www/mod_php55
make install clean

И фиг....не ставится по причине окончания поддержки apache22 во фре.
Делать нечего. Будем обновляться до apache24

portmaster -o www/apache24 www/apache22
Обновились.
Про все прелести переноса конфигов писать не буду, тк у каждого будет своя пляска с бубном, ибо апач24 это отдельная история.

А теперь подключаем PHP:
cd /usr/ports/www/mod_php55
make install clean
Готово!

Не забываем поправить /etc/rc.conf для запуска apache24.
Запускаем апач:
/usr/local/etc/rc.d/apache24 start

Уффффф. На всё ушло три часа. Но зато теперь веб сервак на фре снова в строю.

И напоследок. Очень важно посмотреть что изменилось. Какие директивы удалены(будут удалены), какие добавились(взамен), чтобы после очередного обновления не получить что-то не работающее как надо.

Вот такое глобальное обновление получилось!

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Загрузка...
1 884 views

После какого-то очередного обновления, вдруг перестали запускаться php скрипты. Единственное что появлялось, так это одна единственная надпись:

Unknown: apc_fcntl_unlock failed: in Unknown on line 0

Немного покопавшись в инете, решение было найдено:
koms# cd /usr/ports/www/pecl-APC
koms# make config
и включаем! опцию - [X] - SEMAPHORES
koms# make install clean -D "FORCE_PKG_REGISTER"
koms# apachectl restart

Надеюсь это поможет кому-нибудь.:)

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Загрузка...
2 224 views

Решил тут под конец года навести порядок на сервере и заодно обновиться. Ну раз решено…значит приступим.
portupgrade -u -a
….
=> SHA256 Checksum OK for PECL/APC-3.1.4.tgz.
===> Patching for pecl-APC-3.1.4
===> pecl-APC-3.1.4 depends on file: /usr/local/bin/phpize — found
===> pecl-APC-3.1.4 depends on file: /usr/local/bin/autoconf-2.68 — found
===> PHPizing for pecl-APC-3.1.4
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.

*** Error code 1

Stop in /usr/ports/www/pecl-APC.
*** Error code 1

Stop in /usr/ports/www/pecl-APC.

и надо же опять и как всегда какая-то блять хрень не хочет обновляться 🙁 Читание /usr/ports/UPDATES просветления не дало. Ну что же…. медитируем….читаем лог обновления порта….выстраиваем логические цепочки…Бля а реально то, как всё просто.
Вот оно решение:
portupgrade -f php
portupgrade -u -a или же portupgrade -u pecl-APC

    Ну и в догонку….

>freebsd-update fetch
>freebsd-update install

Ну вот. Теперь на серваке всё обновлено до текущего состояния и можно спать спокойно.
Заодно проверил и контрольную сумму ProFTPd. Ибо эти пидорасы 4-е!!! дня распространяли исходники с бэкдуром 🙂

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Загрузка...
1 167 views

Здесь я просто выложу (как памятку) какие функции PHP  на что и как менять.


ereg():

ereg("\.([^\.]*$)", $this->file_src_name, $extension);

preg_match("/\.([^\.]*$)/", $this->file_src_name, $extension);

ereg_replace():

$this->file_dst_name_body = ereg_replace("[^A-Za-z0-9_]", "",$this->file_dst_name_body);

$this->file_dst_name_body = preg_replace("/[^A-Za-z0-9_]/", "",$this->file_dst_name_body);

eregi():

eregi("\.([^\.]*$)", $this->file_src_name, $extension);

preg_match("/\.([^\.]*$)/i", $this->file_src_name, $extension);

Но можно и не менять эти функции а просто ищем в php.ini следующие строчки (или добавляем в конец если таковых нету в вашем конфиге :) ):

http://ru2.php.net/manual/en/mbstring.overload.php

;0: No overload
; 1: Overload mail() function
; 2: Overload str*() functions
; 4: Overload ereg*() functions

; http://ru2.php.net/manual/en/mbstring.configuration.php#ini.mbstring.func-overload
mbstring.func_overload = 0

Что это означает? А вот что!!!

0 - Оставить все без изменений.
1-4 Включить одну из функций.
7 - Включить сразу все функции.

Тем самым мы включаем поддержку старых функций, при этом новые будут отключены.

Ну вот и всё пока.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Загрузка...
1 311 views

После месяца использования PHP5.3 , выяснилось что неправильно стала работать гвестбука и форум. Начнём с гостевой http://amigas.ru/webserverdata/gb/index.php . Стоит она (inDEV) у меня уже очень очень давно и хотелось бы её оставить на память но в рабочем варианте. Но при её открытии стало выдаваться следующее:

Deprecated: Function split() is deprecated in /data/sites/my-www/webserverdata/gb/engine/guest.php on line 29
Deprecated: Function split() is deprecated in /data/sites/my-www/webserverdata/gb/engine/guest.php on line 29
Deprecated: Function split() is deprecated in /data/sites/my-www/webserverdata/gb/engine/guest.php on line 29
Deprecated: Function split() is deprecated in /data/sites/my-www/webserverdata/gb/engine/guest.php on line 29
Deprecated: Function split() is deprecated in /data/sites/my-www/webserverdata/gb/engine/guest.php on line 29
Deprecated: Function split() is deprecated in /data/sites/my-www/webserverdata/gb/engine/guest.php on line 29
Deprecated: Function split() is deprecated in /data/sites/my-www/webserverdata/gb/engine/guest.php on line 29

Количество сообщений об ошибке как оказалось зависит от количества записей в гостевой. Ну что-же… Будем исправлять. На сайте пыхи советуют заменить устаревшую функцию split на preg_split. Идём в quest.php и находим строку 29. Вот она:

list($date,$ip,$name,$email,$site,$msg) = split(«@@@»,$ln[$stop]);

изменяем её так:

list($date,$ip,$name,$email,$site,$msg) = preg_split(«@@@»,$ln[$stop]);

При попытке захода в гостевую получаем следующую ошибку:

Warning: preg_split() [function.preg-split]: Unknown modifier ‘@’ in /data/sites/my-www/webserverdata/gb/engine/guest.php on line 29
Warning: preg_split() [function.preg-split]: Unknown modifier ‘@’ in /data/sites/my-www/webserverdata/gb/engine/guest.php on line 29
Warning: preg_split() [function.preg-split]: Unknown modifier ‘@’ in /data/sites/my-www/webserverdata/gb/engine/guest.php on line 29
Warning: preg_split() [function.preg-split]: Unknown modifier ‘@’ in /data/sites/my-www/webserverdata/gb/engine/guest.php on line 29
Warning: preg_split() [function.preg-split]: Unknown modifier ‘@’ in /data/sites/my-www/webserverdata/gb/engine/guest.php on line 29
Warning: preg_split() [function.preg-split]: Unknown modifier ‘@’ in /data/sites/my-www/webserverdata/gb/engine/guest.php on line 29
Warning: preg_split() [function.preg-split]: Unknown modifier ‘@’ in /data/sites/my-www/webserverdata/gb/engine/guest.php on line 29

Ну что же опять топаем на сайт php.net  и читаем вдумчиво и ещё раз 5 также. А потом долго думаем. И о эврика!!!!! Пробуем так:

list($date,$ip,$name,$email,$site,$msg) = preg_split(«/@@@/»,$ln[$stop]);

И наконец то всё заработало как надо! Что изменилось? Да просто добавили пару слэшей «/» в функцию preg_split.

Ну вот и всё пока. Надеюсь мой опыт хоть кому-то поможет.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Загрузка...
8 934 views

PHP 5.3.2

Апр 13

Ну вот и пришло время когда появился PHP5.3.x в портах FREEBSD. Ну и раз появилось то и появилось желание обновиться и опробовать. До этого пробовал на винде версию 5.3 и как оказалось многие скрипты просто стали неработоспособными, что и пугает. Но мы то эти самые матёрые , которые нихера не боятся трудностей. Да и с прогрессом стараюсь идти в ногу )наступая на грабли и оказываясь в полной жопе(
Итак начнём:

1. Для начала обновим порты:
>portsnap fetch update
2. Идём в /usr/ports/UPDATING и видим что там предлагают сделать с пыхой. Удалить
- php5-dbase
- php5-ncurses
- php5-pcre
- php5-spl
- php5-ming
- php5-mhash
и пересобрать php5.
Что собственно и делаем:
>pkg_delete -f php5-dbase php5-ncurses php5-pcre php5-spl php5-ming php5-mhash
>portupgrade -u php5
>apachectl restart - чтобы апач подцепил пыху5.3.2

Вот и всё по первому пункту.
3. Ну вот и начались проблемы. Первое что бросилось в глаза так это ругань на дату. После поиска и прочтения описания изменений - наступает просветление.
Идём в
>ee /usr/local/etc/php.ini
и добавляем строчку - date.timezone = "Asia/Yekaterinburg".
Свою таймзону найти можно на сайте PHP.

И о чудо. 70% скриптов ожило. А 30% всё ещё выёживается. Для меня были важны фотогалерея на coppermine, блог на wordpress, и wr-scripts(форум,доска объявлений,итд). И они как ни странно заработали. Ну а с остальными будем разбираться потихоньку.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Загрузка...
900 views

php5-gd

Апр 5

Как всегда и опять вдруг неожиданно эти блядские студенты опесурсники поломали библиотеку php5-gd (или libpng). И как итог перестали отображаться все изображения в формате PNG. Одно радует что количество таких файлов у меня ~2%. Но если честно то такие сюрпризы очень огорчают. Также попробовал патч и заново пересобрать php5-gd. В логи перестали сыпацца сообщения об ошибке но и отображаться картинки не стали 🙁

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Загрузка...
2 173 views