Вернуться на страницу трюков

Распространенные ошибки php


Представляю Вам все самые известные ошибки, с которым столкнулся или столкнётся каждый из программистов. Плюс к ошибкам прилегается и способы их решения!!

Но самое важное, перед началом работы необходимо первой строчкой в php файле прописать:
error_reporting(-1);
Кроме этого в .htaccess прописать:
php_flag display_errors on
. А теперь открываем скрипт и сравниваем с ошибками.

'Warning: Cannot send session cookie - headers already sent...' или 'Cannot add header information - headers already sent...'.


Любой вывод информации на экран должен быть после обработки данных. Об верной структуре идётся в уроке №16. То есть нельзя ни при каких обстоятельствах писать
echo 'text';
session_start();
, то есть в данном случае выводим информацию на экран, а уже после активируем сессию, что является ошибкой. Аналогично с работой кукисов на добавление, редактирование и удаление, только чтение использовать можно внутри вывода:
echo $_COOKIE['test'];
Как же происходит всё это: дело в том, что данные идут в 2 потока, первым является отправка заголовков клиенту, где устанавливается работа с куками, сессиями, кодировкой. И когда заголовки (headers) были полностью отправлены клиенту, то начинается второй этап - отправка данных. И данная ошибка возникает тогда, когда пытаетесь отправить заголовок уже во втором этапе, в этапе отправки данных, то есть после первого вывода данных. Помним, что тег <html> так же является выводом данных, как и любой пробел. Кроме всего ранее указанного существует ещё 1 момент, когда возникает подобная ошибка: использование UTF-8 with BOM. Чтобы избежать подобной ошибки необходимо все файлы сохранять в кодировке UTF-8 without BOM, то есть отключать галочку при сохранении или в свойстве документа Include Unicode Signature (BOM). Если мы работаем со сторонним приложением или есть проблема с тем, что мы не можем отделить обработку данных от вывода (только в случае работы с чужим проектом! Свои обязаны быть 100% правильными), то используйте буферизацию вывода на стороне сервера (htaccess: php_flag output_buffering off) или уже самого скрипта (ob_start)

Спасите, крякозябры. Проблемы с кодировкой.


Есть решение, достаточно почитать и выполнить все 11 пунктов указанных в этой статье: Борьба с кодировкой UTF-8

syntax error, unexpected $end in %file% on line %line%


Ответ достаточно прост, забыли закрыть скобки фигурные. Количество открытых скобок должно равняться количеству закрытых.

Notice: Undefined variable: %name% in /home/creative/public_html/school-php.com/errors.php on line %line%


Это говорит о том, что ты, мой юнный друг, пытался вывести или обратиться к переменной, которая просто напросто не существует! Нельзя писать
if($var == 10) или elseif($x)
, если такие переменные ранее не были созданы тобою в скрипте. Так как часть переменных может появляться в скрипте по ситуации ($_POST, $_GET), то необходимо делать двойную проверку:
if(isset($var) &amp;&amp; $var == 10) 
if(isset($_COOKIE['var']) &amp;&amp; $_COOKIE['var'] == 'test')

. Если переменная используется для функции myfunc($var), то мы должны в любом случае её создать, пусть даже с пустой информацией и использовать следующую схему:
if(!isset($var)) $var = '';

Warning: main(blocks/bd.php): failed to open stream: No such file or directory in a:\home\localhost\www\phpsite\admin\lock.php on line 1


Такая и многие подобные ошибки с разными путями говорят об этой банальной вещи: "No such file or directory", что в переводе с буссурманского - ты не создал файл по указанному пути. В папке admin должен быть файл lock.php, в нём ты используешь include (file_get_contents, file и т.д.), но при этом ты указан неверный путь! Находясь в папке admin ты ищешь папку "blocks", а внутри него файл bd.php, хотя есть предположение, что либо этот файл не был создан по указанному пути, или путь неверно был указан. Если необходимо вернуться на 1 каталог выше,то есть выйти из папки admin, то надо написать "../blocks/bd.php". Но не бойся, это всегда на начальной стадии обучения, путаница с путями.

Главная БАЗОВЫЙ КУРС ПЕРВЫЙ УРОВЕНЬ программирования ВТОРОЙ УРОВЕНЬ верстки ВТОРОЙ УРОВЕНЬ программирования Начать обучение Запуск проекта Мелкие трюки Делимся практикой трудоустройства Проверь свои знания Задачи по PHP MySQL Блог Отзывы