ExBB Community ExBB Community
 Сайт проекта ExBB Общение объединяет!
Войдите на форум при помощиВойти через loginza
 Чат на форуме      Помощь      Поиск      Пользователи     BanList BanList


 Страниц (3): [1] 2 3 »   

> Без описания
yura3d_2
Отправлено: 1 июля 2013 — 08:38
Post Id


Пользователь
Junior Member


Покинул форум
Сообщений всего: 64
Дата рег-ции: Апр. 2013  
Репутация: 2




Тут на форуме за последнее время прочитал несколько мнений, в которых люди высказывают свои опасения по поводу новых версий PHP и возможной неработоспособности ExBB на них. Хочу несколько развеять эти опасения и заявить, что при проектировании ядра ExBB FM 1.0 использовались максимально унифицированные между версиями языка средства и конструкции PHP, таким образом, ядро форума способно работать как на устаревшем PHP 4, так и с новыми версиями PHP 5.4 и грядущем PHP 6 (с минимальными изменениями). Если Ваш хостер уже перешёл на текущую стабильную ветку PHP 5.4.x, то ExBB с миниальными правками в ядре будет прекрасно работать и с ней.

На текущий момент единственная несовместимость ядра ExBB с PHP 5.4 выявлена в том, что в новой версии PHP запрещено явно использовать дескрипторы ресурсов (в ExBB это открытые файлы текстовой базы данных форумы) в качестве индекса массивов (общий массив дескрипторов открытых файлов применяется для противодействия блокировке и обнулению файлов в случае ошибочного завершения работы).

Для решения проблемы совместимости откройте файл include/fm.class.php, находим строку:
CODE:
$this->_FilePointers[$fp] = $fp;

и замените её строкой:
CODE:
$this->_FilePointers[(int) $fp] = $fp;

В этом же файле найдите строку:
CODE:
unset($arr,$this->_FilePointers[$fp]);

и замените её строкой:
CODE:
unset($arr,$this->_FilePointers[(int) $fp]);

В этом же файле найдите строку:
CODE:
unset($this->_FilePointers[$fp]);

и замените её строкой:
CODE:
unset($this->_FilePointers[(int) $fp]);

На этом всё!
 
 
Yamaliya
Отправлено: 1 июля 2013 — 16:01
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 662
Дата рег-ции: Авг. 2012  
Откуда: Ямал
Репутация: 20




yura3d_2, изменения можно сделать заранее? Не дожидаясь перехода хостера на новые версии? Другими словами: будет-ли изменённый код работоспособен на старых версиях?
 
 
yura3d_2
Отправлено: 1 июля 2013 — 16:04
Post Id


Пользователь
Junior Member


Покинул форум
Сообщений всего: 64
Дата рег-ции: Апр. 2013  
Репутация: 2




wasp пишет:
yura3d_2, изменения можно сделать заранее? Не дожидаясь перехода хостера на новые версии? Другими словами: будет-ли изменённый код работоспособен на старых версиях?

Да. Если хостер обновит версию PHP до 5.4 раньше, чем Вы сделаете эти изменения, форум будет выдавать предупреждения:
CODE:
Strict Standards: Resource ID#<NN> used as offset, casting to integer
 
 
BON
Отправлено: 1 июля 2013 — 16:40
Post Id



Администратор
ExBB Team
Admin


Покинул форум
Сообщений всего: 2762
Дата рег-ции: Нояб. 2010  
Откуда: СССР/Белгород
Репутация: 72




с php 5.4 есть проблемы и с модом хранения статистики. Функции SQLte меняются. Нельзя пока ставить 5.4
 
 
alexx
Отправлено: 1 июля 2013 — 16:50
Post Id


Пользователь
Advanced Member


Покинул форум
Сообщений всего: 495
Дата рег-ции: Февр. 2010  
Откуда: Россия
Репутация: 12




yura3d_2
Спасибо за предупреждение и решение, до конвертации хочется сохранить рабочим все, вот заметил:

Цитата:
В этом же файле найдите строку:

CODE:
unset($this->_FilePointers[$fp]);


и замените её строкой:

CODE:
unset($this->_FilePointers[(int) $fp]);[/quote]



Первая строка встречается вот здесь еще ( 434 строка в файле), оставить или заменить?

CODE:
if ($mode != LOCK_SH) unset($this->_FilePointers[$fp]);
 
 
BON
Отправлено: 1 июля 2013 — 19:59
Post Id



Администратор
ExBB Team
Admin


Покинул форум
Сообщений всего: 2762
Дата рег-ции: Нояб. 2010  
Откуда: СССР/Белгород
Репутация: 72




yura3d_2, кстати, ещё был тест на php 5.4, не знаю поправили щас в нем это или это от двига зависит, но форум тупо не понимал кориллицу. Если в сообщении была кирилица то не добавлялись посты, если латиницей писать то нормал. Кому охото заморочиться, проверьте
 
 
yura3d_2
Отправлено: 1 июля 2013 — 20:19
Post Id


Пользователь
Junior Member


Покинул форум
Сообщений всего: 64
Дата рег-ции: Апр. 2013  
Репутация: 2




alexx пишет:
Первая строка встречается вот здесь еще ( 434 строка в файле), оставить или заменить?

Эта строка у Вас должна быть в закомментированном, и соответственно, неиспользуемом фрагменте кода. Поэтому её можно оставить как есть.

BON пишет:
с php 5.4 есть проблемы и с модом хранения статистики. Функции SQLte меняются. Нельзя пока ставить 5.4

Я пока говорю только про ядро, модов не касаюсь.

BON пишет:
yura3d_2, кстати, ещё был тест на php 5.4, не знаю поправили щас в нем это или это от двига зависит, но форум тупо не понимал кориллицу. Если в сообщении была кирилица то не добавлялись посты, если латиницей писать то нормал. Кому охото заморочиться, проверьте

У меня работает
 
 
CAB
Отправлено: 23 июля 2013 — 21:54
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 629
Дата рег-ции: Февр. 2011  
Откуда: Москва
Репутация: 30




Пытаюсь потестировать данную доработку и вот что получается, именно на версии 5.4 на некоторых страницах админки вылетает ошибка 500 (на более старших версиях всё работает).
Вычислил источник - это строка
CODE:
if ( $key == 'gzip_level' ) validate_gzip_level( &$variable );
в файле setvariables.php, а именно символ & перед переменной. Данная строка из мода печать эффективности GZip сжатия и возможность изменения степени сжатия. Её у многих нет, но полазив по скрипту, увидел большое количество мест, где эта конструкция используется.
К сожалению не могу найти информацию зачем нужен этот символ перед переменной. Кто знает отпишитесь. А там разберёмся, что с ним делать.
 
 
yura3d_2
Отправлено: 23 июля 2013 — 22:46
Post Id


Пользователь
Junior Member


Покинул форум
Сообщений всего: 64
Дата рег-ции: Апр. 2013  
Репутация: 2




CAB
Этот символ в вызовах функций - по сути синтаксическая ошибка. Просто старые версии PHP при встрече такового выводили либо нотисы, либо вообще никак на него не реагировали. Начиная с версии 5.4 синтаксический анализатор стал более строг ко многим мелочам и устаревшим конструкциям. Конечно, к 500-й ошибке это не должно приводить. Возможно, у Вас в файле php.ini просто отключён вывод ошибок на экран. Смотрите директиву display_errors, часто из-за отключённого вывода ошибок (а во многих репозиториях, в том числе Debian, он по-умолчанию как раз-таки отключён) вместо внятного сообщения об ошибках юзеры получают либо 500-ю ошибку, либо пустую страницу, что и вводит их в ступор.

Ну а что с самим символом делать, думаю понятно - удалить.
(Добавление)
Кстати, строки, вызывающие проблему, относятся к моду Печать эффективности сжатия Gzip. В самом ядре ExBB подобной проблемы нет

(Отредактировано автором: 23 июля 2013 — 22:47)

 
 
1Bot
Отправлено: 24 июля 2013 — 08:36
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 773
Дата рег-ции: Апр. 2009  
Откуда: Днепропетровск
Репутация: 69




Кстати функция unserialize, которая используется для декодирования файлов форума намного быстрее работает в php 5.4.9 в сравнении с 5.3.8. Особенно заметно при больших объемах декодируемого, да и памяти меньше используется новым php 5.4.9.
Так что есть смысл по возможности перейти на новую версию.
 
 
CAB
Отправлено: 24 июля 2013 — 12:41
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 629
Дата рег-ции: Февр. 2011  
Откуда: Москва
Репутация: 30




yura3d_2 пишет:
Ну а что с самим символом делать, думаю понятно - удалить.
Спасибо за разъяснения.
yura3d_2 пишет:
В самом ядре ExBB подобной проблемы нет
А что тогда делать с этим:
1. В файле forums.php
CODE:
function viewing(&$statviewing, &$statforum) {

2. В файле include\fm.class.php
CODE:
function _Read2Write(&$fp,$filename,$newfile = TRUE) {
CODE:
function _Write(&$fp,$arr) {
CODE:
//function _Flock(&$fp,$filename,$mode = LOCK_SH) {

3. В файле include\JsHttpRequest\JsHttpRequest.php
CODE:
ob_start(array(&$this, "_obHandler"));
CODE:
array_walk_recursive($result, array(&$this, '_toUtf8_callback'), $this->SCRIPT_ENCODING);
CODE:
function _toUtf8_callback(&$v, $k, $fromEnc)
CODE:
$data = preg_replace_callback('/%u([0-9A-F]{1,4})/si', array(&$this, '_ucs2EntitiesDecodeCallback'), $data);

4. В файле include\lib.php
CODE:
function Print_Paginator($total,$get,$per,$links,&$first,$dots = FALSE) {
CODE:
function validate_gzip_level( &$gzip_level )
Последнее от названного ранее мода.

5. В файле include\vars.class.php
CODE:
function Read_Vars(&$return,$array) {
CODE:
return preg_replace("#&amp;(\#[0-9]+;)#", "&$1", htmlspecialchars($var,ENT_QUOTES));
CODE:
function _Boolean(&$array,$key) {

6. В файле index.php
CODE:
function viewing(&$viewing) {
CODE:
function today(&$todayvisit) {

7. В файле modules\mailer\_cron.php
CODE:
function _Read2Write(&$fp, $file) {
CODE:
function _Write(&$fp, $data) {

8. В файле modules\mailer\Mailer.class.php
CODE:
$sent = &$config['sent'];
CODE:
$sent = &$config['through'];

9. В файле modules\threadstop\frontindex.php
CODE:
function sort_array($array,$key,&$return_array){
CODE:
function _sort(&$array, $key, $state) {

10. В файле postings.php
CODE:
function UpdateAutorsInfo(&$autors) {
CODE:
function UpdateOldList(&$topic,&$list) {
CODE:
function UpdateOldTopicFile(&$topic,&$postkey,$mode) {
CODE:
function UpdateAttaches(&$newtopic,&$attaches) {

11. В файле search\search.php
CODE:
function get_query(&$wholeword,&$querymode,&$query_arr) {
CODE:
function get_results($inforum,$wholeword,$querymode,$query_arr,&$allres) {
CODE:
function boolean($inforum,&$query_arr,&$querymode,&$allres) {

12. В файле topic.php
CODE:
function viewing(&$viewing) {

yura3d_2 пишет:
Этот символ в вызовах функций - по сути синтаксическая ошибка.
Я сначала так и подумал, но увидев количество таких "ошибок" засомневался.
 
 
yura3d_2
Отправлено: 24 июля 2013 — 14:36
Post Id


Пользователь
Junior Member


Покинул форум
Сообщений всего: 64
Дата рег-ции: Апр. 2013  
Репутация: 2




CAB пишет:
Я сначала так и подумал, но увидев количество таких "ошибок" засомневался.

Судя по Вашему сообщению, Вы никогда не слышали о механизме ссылок (references) в PHP. Поэтому для начала прочтите мануал http://php.net/manual/ru/languag...ences.whatdo.php
В объявлении функций символ & не является ошибкой, он лишь указывает, что аргумент передаётся в функцию по ссылке, а не по значению. Такая передача производится в тех случаях, когда необходимо, чтобы функция могла работать с исходной переменной (объектом), а не с его локальной копией внутри функции (как при передаче по значению). В результате, все изменения, произведённые над ссылкой внутри функции, отражаются на значении исходной переменной за пределами функции (без необходимости использования выражения return, которое, к слову, может возвращать из функции лишь одно значение). Также передача аргументов по ссылке позволяет экономить ОЗУ и процессорное время.

CAB пишет:
CODE:
ob_start(array(&$this, "_obHandler"));

CAB пишет:
CODE:
$sent = &$config['sent'];

Ссылки также могут выступать элементами массива и операндами в выражениях, тут тоже ошибки нет. Итого, ни в одной из приведённых Вами строк нет ошибок.
 
 
CAB
Отправлено: 24 июля 2013 — 16:29
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 629
Дата рег-ции: Февр. 2011  
Откуда: Москва
Репутация: 30




yura3d_2 пишет:
Судя по Вашему сообщению, Вы никогда не слышали о механизме ссылок (references) в PHP.
Ещё раз большое спасибо за разъяснение и за ссылку на мануал. Я ж как раз и написал в своём первом посте, что не смог найти информацию по этому вопросу. Поисковики просто не понимали что я хочу ибо я сам не понимал что мне надо. Я правда и сейчас не понимаю, но хотя бы знаю как это называется Радость
Даже прочитав мануал, а также и другую найденную мной теперь информацию я не могу сообразить почему приведённая здесь http://exbb.info/community/topic...16457#1374616457 мной строка не правильная? По виду она вполне похожа на "правильные".

yura3d_2, и ещё вопрос к первому сообщению темы.
В файле search.php есть строка
CODE:
$fm->_FilePointers[$fp] = $fp;
надо ли её изменить на
CODE:
$fm->_FilePointers[(int) $fp] = $fp;
или в данном случае это не надо делать?
 
 
roma1
Отправлено: 25 июля 2013 — 14:27
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 811
Дата рег-ции: Янв. 2011  
Откуда: СССР
Репутация: 24




мой форум перевели на 5.3.24 и побелел экран при включенных модах хранения статистики и поиск сообщений вроде, ну всех что использует sqlite. Вынужден был отключить либо моды тогда форум заработал, но это плохо. Тогда удалил файл Php.ini с сервера и включил моды. Форум заработал но ерор лог наполняется слишком быстро, моды работают но файл php.ini мне был нужен вроде, он направлял файлы сессий в папку temp на сервере, куда они теперь валят я не знаю ибо папка пуста с тех пор как удалил ini файл.
Хостер не доволен стуком, говорит что обновляйте двиг под версию php. Ранее до обновления сервера всё работало.

Вот прикрепляю файл php.ini может кто когда то что и поможет, и эрор лог к нему прямо с сервера.
думаю это в тему, если нет то перенесите в нужную тему. с ув.

Скачать файл: (для скачивания файла Войдите или зарегистрируйтесь)
Скачан раз: 73
 
 
1Bot
Отправлено: 25 июля 2013 — 14:50
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 773
Дата рег-ции: Апр. 2009  
Откуда: Днепропетровск
Репутация: 69




roma1 пишет:
Вот прикрепляю файл php.ini может кто когда то что и поможет

Навскидку просмотрев php.ini есть одна неувязка - дважды задается путь к библиотеке Zend:
CODE:
zend_extension="/usr/local/IonCube/ioncube_loader_lin_5.2.so"
zend_extension="/usr/local/Zend/lib/Optimizer-3.3.9/php-5.2.x/ZendOptimizer.so"


по файлу error_log чтобы понять необходимо видеть файлы, в которых есть ошибки:
/home/arxevari/public_html/include/fm.class.php
/home/arxevari/public_html/index.php

хотя там только предупреждения и подсказки, но критических ошибок нет.
 
 
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Решение проблем »

> Похожие темы: Адаптация ядра форума для PHP 5.4
Темы Форум Информация о теме Обновление
немогу создать форум
проблема при создании форума
Решение проблем Ответов: 2
Автор темы: Zamorskiy
7 февраля 2011 — 20:19
Автор: Zamorskiy
Работа с файлом footer.tpl
Как дополнять выходные данные на странице форума
Решение проблем Ответов: 4
Автор темы: Павел Пушков
19 ноября 2017 — 14:23
Автор: Павел Пушков
Объявление на форуме для гостей (или для пользователей с другими правами) с админкой
На главной форума, но можно вывести в любом другом месте
Модификации и дополнения Ответов: 1
Автор темы: Guyver
8 сентября 2016 — 16:30
Автор: Liliat
Ограничение символов в столбце "Обновление"
.. на морде форума
Настройка форума Ответов: 6
Автор темы: Pauk
18 ноября 2010 — 22:24
Автор: Pauk
Проблема с перенаправлением!
Проблема с перенаправлением гостя на главную страницу форума
Решение проблем Ответов: 2
Автор темы: trito
9 января 2011 — 20:55
Автор: trito
 



Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
 




Яндекс.Метрика   

Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0838]     [ ]