Обновите закладки



Начиная с версии PHP 5.0.5, а также 5.1, разработчики PHP усилили требования к коду. В частности, это касается работы функций, которые требуют в качестве аргументов - ссылки на переменные, массивы и т.п.

В частности, код приведённый ниже и нормально работающий на PHP 4.4, начиная с версии PHP 5.0.5 выдаёт сообщение об ошибке вида: Fatal error: Only variables can be passed by reference in....

function Foo(&$data) {
  // do some code with $data
}
  
function Bar() {
  return "Hello world";
}

echo Foo(Bar());

Теперь при вызове функции Foo(), требующей передачи ей ссылки на переменную (для непосредственной её модификации в функции) с аргументом, являющимся другой функцией, PHP 5.0.5 отказывается выполнять этот код по причине его "неграмотности".

Для решения данной проблемы необходимо немного видоизменить код, вводя временную переменную. Правильный (и к тому же работающий на PHP 5.0.5, а также 5.1) вызов функции выглядит так:

$tmp_var = Bar();
echo Foo($tmp_var);

Или в сокращённом варианте:

echo Foo($tmp_var = Bar());

Как узнать, в каком месте необходимо изменить код?

Для определения, в каком месте (файл, строка) Вам необходимо изменить код, чтобы Ваши скрипты нормально работали на PHP 5.0.5, следуйте следующим инструкциям:

  1. Установите в файле ~/cgi-bin/php.ini значение параметра error_reporting в значение E_ALL (или E_ERROR), а значение параметра display_errors = On (это очень важно, поскольку при возникновении подобных ошибок интерпретатор PHP почему-то не пишет в лог файл ошибок сообщение об ошибке. К тому же Вы сразу же будете видеть ошибку в окне браузера).
  2. При возникновении ошибки типа Fatal error: Only variables can be passed by reference in file on line line Вам нужно открыть файл file и на строке line проанализировать код и внести изменения в соответствии с описанными Выше рекомендациями. Например, если на указанной строке line php-код имеет такой вид:
    $search_raw_words['text'] = split_words(clean_words('post',
         $post_text, $stopword_array, $synonym_array));
    
    то, Вам нужно (скорее всего) изменить его следующим образом:
    $search_raw_words['text'] = split_words($tmp = clean_words('post',
         $post_text, $stopword_array, $synonym_array));
    
  3. После проделанных изменений и нормализации работы Ваших скриптов (возможно, Вам придётся изменить php-код не в одном месте), не забудьте отключить отображение сообщений интерпретатора php, установив значение директивы display_errors = Off.

Надеемся, изложенная выше информация поможет Вам быстро и легко адаптировать Ваши php-скрипты к новой версии PHP 5.0.5.

Полезные ссылки

Панель управления Хостингом Обыкновенным
Правила, по которым мы работаем
Как разместить фотогалерею
FAQ по хостингу
Перейти на главную страницу

Вопросы и ответы об этом проекте
Q: Почему "обыкновенный"?
A: Потому что ничего лишнего. Хостингов, называющих себя "надежный", "супер", "круглосуточный", "профессиональный" и так далее - предостаточно. Хотя по сути все эти эпитеты - призыв купить именно у них. Мы же не даем необоснованных обещаний.

Q: А чем вы лучше других?
A: Мы можем много всего пообещать, но разве вы поверите? Лучше попробуйте, и сделайте свои выводы. Вы можете бесплатно тестировать наш хостинг сколь угодно долго, и в любой момент перейти на платный. И наоборот.

Q: Почему бесплатно?
A: Нужно же Вам потестировать наш хостинг перед покупкой. А нам нужно рекламироваться на сайтах, которые хостим бесплатно.

Q: Где дизайн вашего сайта?
A: Его нет. На дизайнерах сэкономили и купили еще серверов. То оформление, что Вы видите - вполне выполняет свои функции.

Q: Как долго будет существовать проект?
A: Вечно. А что вы ожидали в ответ на такой вопрос?

Q: Будет ли показываться реклама на сайте, использующем бесплатный хостинг?
A: Да, будет.468х60 в верхнем правом углу страницы только первые 60 секунд. Разумеется, на платном варианте рекламы нет.

Q: Почему не даете почтовый ящик, как на других хостингах?
A: Вам мало freemail'ов?

Q: Ваша простота - она от неумения сделать "круто"?
A: Мы много лет работали в интернет-компаниях. Мы умеем все. Минимализм этого проекта - осознанный выбор, а не следствие непрофессионализма.

Q: И все-таки, в чем подвох для бесплатных?
A: Очень просто. Если будете сильно грузить сервер - предложим перейти на платный вариант, или сменить хостинг, если не сильно - оставайтесь бесплатно, винты нынче дешевые.
Реклама
Семейный врач, консультации и наблюдение взрослых и детей в Киеве и окрестностях.
Коллекция старых и новых мультфильмов. Скачать мультфильм можно бесплатно!
Боулинг в Украине