PHP имеет следующие типы ошибок
PHP имеет следующие типы ошибок и предупреждений:
Значение |
Константа |
Описание |
1 |
E_ERROR |
Фатальная ошибка времени исполнения. |
2 |
E_WARNING |
Предупреждение времени исполнения. |
4 |
E_PARSE |
Сообщение интерпретации времени исполнения. |
8 |
E_NOTICE |
Простое сообщение времени исполнения. |
16 |
E_CORE_ERROR |
Фатальная ошибка при инициализации PHP. |
32 |
E_CORE_WARNING |
Предупреждение инициализации. |
64 |
E_COMPILE_ERROR |
Фатальная ошибка компиляции. |
128 |
E_COMPILE_WARNING |
Предупреждение компиляции. |
256 |
E_USER_ERROR |
Ошибки, определяемые пользователем. |
512 |
E_USER_WARNING |
Предупреждения, определяемые пользователем. |
1024 |
E_USER_NOTICE |
Сообщения, определяемые пользователем. |
2047 |
E_ALL |
Все перечисленные сообщения. |
Указанные значения в виде чисел или констант можно комбинировать, формируя битовую маску ошибок, о которых необходимо сообщать в ходе исполнения сценария. Для комбинирования используются битовые операторы, но в конфигурационном файле php.ini распознаются только "|", "~", "!" и "&".
В PHP 4 по умолчанию разрешены сообщения вида E_ALL & ~E_NOTICE, то есть сообщаться должно все, кроме обычных сообщений. Можно переопределить эту установку параметром файла конфигурации error_reporting() (ее также можно указывать в файлах конфигурации сервера Apache).
Если при вызове функции перед ее именем указать символ "@", то в случае возникновения ошибки в этой функции сообщение о нем выдаваться не будет.
В настоящее время оператор игнорирования ошибок блокирует даже выдачу сообщений о критических ошибках, при возникновении которых сценарий досрочно завершается.
Если разрешен параметр конфигурации track_errors, то сообщение об ошибке сохраняется в глобальной переменной $php_errormsg.
<?// определенный пользователем обработчик ошибокfunction userErrorHandler($errno,$errmsg,$filename,$linenum,$vars) { // время возникновения ошибки $dt=date("Y-m-d H:i:s (T)"); $errortype = array( 1 => "Error", 2 => "Warning", 4 => "Parsing Error", 8 => "Notice", 16 => "Core Error", 32 => "Core Warning", 64 => "Compile Error", 128 => "Compile Warning", 256 => "User Error", 512 => "User Warning", 1024 => "User Notice" ); $err.="время ($dt), номер ошибки ($errno), "; $err.="тип ошибки (".$errortype[$errno]."): "; $err.="\"$errmsg\".файл \"$filename\", строка ("; $err.=$linenum.")\n"; $user_errors=array(E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE); if(in_array($errno, $user_errors)) // выдать сообщение для ошибок пользователя echo $err; // сохранить событие ошибки в системном журнале error_log($err, 3, "/usr/local/php4/error.log");} // установить уровень контроля ошибок и обработчикerror_reporting(0); // не выводить сообщения PHP$old_error_handler=set_error_handler("userErrorHAndler"); // неопределенная константа вызывает предупреждение$t=_NOT_DEFINED_CONSTANT; trigger_error("Моя ошибка", E_USER_ERROR);trigger_error("Мое предупреждение", E_USER_WARNING); ?>
Данная группа функций позволяет управлять тем, как PHP при выполнении сценария выводит информацию. Это может быть полезно в различных ситуациях, в особенности при посылке браузеру HTML-заголовков (headers) после того, как сценарий начал выводить HTML-текст. (В обычном случае невозможно послать заголовок после того, как был начат вывод текста.)
Эти функции не воздействуют на заголовки, посланные функциями header() или setcookie(), а только на функции, подобные echo() и HTML-тексту между блоками PHP-кода.
<?php ob_start();echo "Hello\n" setcookie("cookiename", "cookiedata"); ob_end_flush(); ?>
В примере выше вывод командой echo() будет сохранен в буфере вывода до вызова функции ob_end_flush(). В то же время вызов setcookie() успешно сохраняет cookie, не вызывая ошибки.
PDF-функции позволяют PHP создавать PDF-файлы с помощью библиотеки PDF, созданной Томасом Мерзем (http://www.pdflib.com/pdflib/index.html); также могут потребоваться библиотеки JPEG (ftp://ftp.uu.net/graphics/jpeg/) и TIFF (http://www.libtiff.org/).
С pdflib поставляется хорошая документация, описывающая возможности библиотеки. Имена функций и аргументы идентичны в библиотеке и PHP. Размеры и координаты измеряются в единицах Postscript (72 на дюйм), но это зависит от выбранного разрешения.
Аналогом библиотеки является ClibPDF.
Версии ниже 3.0 pdflib не поддерживается в PHP 4.
<?php$fp = fopen("test.pdf". "w");$pdf = pdf_open($fp);pdf_set_info($pdf, "Author", "Uwe Streinmann");pdf_set_info($pdf, "Title", "Test for PHP PDFlib");pdf_set_info($pdf, "Creator", "See Author");pdf_set_info($pdf, "Subject", "Testing");pdf_begin_page($pdf, 595, 842);pdf_add_outline($pdf, "Page 1");pdf_set_font("$pdf, "Times-Roman", 30, "host");pdf_set_value($pdf, "textrendering", 1);pdf_show_xy($pdf, "Times Roman outlined", 50, 750);pdf_moveto($pdf, 50, 740);pdf_lineto($pdf, 330, 740);pdf_stroke($pdf);pdf_end_page($pdf);pdf_close($pdf);fclose($fp);echo "<A href=getpdf.php>finished</A>";?><?php// Сценарий getpdf.php просто возвращает документ pdf$fp = fopen("test.pdf", "r");header("Content-type: application/pdf");fpassthru($fp);fclose($fp);?>
Данная серия статей посвящена созданию документов Excel при помощи PHP. Данная возможнось может понадобиться, например, если нужно предоставить пользователю загружаемые данные в виде листов Excel. Это могут быть прайсы на продукцию, автоматически генерируемые из базы данных на сервере, либо какие-то документы, которые также необходимо представить в виде документов Excel.
Здесь рассматривается возможность работы с Excel-документами через COM-объект. К сожалению работа с COM-объектами в PHP возможна только на Windows-платформах. По-этому если Вы используете Unix-хостинг, то создавать и редактировать Excel-документы приведенным ниже способом не получится.
Работа с COM-объектами производится при помощи синтактсиса
$com_object = new COM($object);
где
- $com_object - новый COM-объект;
- $object
- id-класс требуемого объекта. - Открытие, запись, закрытие документа
- Формат ячеек: Выравнивание
- Формат ячеек: Шрифт
- Работа со строками
- Работа с колонками
- Добавление / Удаление / Переименование листов
- Рисование таблиц
- Копирование / вставка ячеек
Для создания Excel-документов переменной $object необходимо задать значение "Excel.Application" либо "Excel.sheet".
$xsl = new COM("Excel.Application");
После создания нового COM-объекта, можно обращаться к его свойствам и методам:
<?php$xls = new COM("Excel.Application"); // Создаем новый COM-объект$xls->Application->Visible = 1; // Заставляем его отобразиться$xls->Workbooks->Add(); // Добавляем новый документ $rangeValue = $xls->Range("A1");$rangeValue->Value = "В выделенном блоке текст будет жирный, подчеркнутый, наклонный";$rangeValue = $xls->Range("A2");$rangeValue->Value = "Шрифт будет иметь высоту 12";$rangeValue = $xls->Range("A3");$rangeValue->Value = "Имя шрифта - Times New Roman"; $range=$xls->Range("A1:J10"); // Определяем область ячеек$range->Select(); // Выделяем ее$fontRange=$xls->Selection(); // Присваиваем переменной выделенную область // Далее задаем параметры форматирования текста в выделенной области$fontRange->Font->Bold = true; // Жирный$fontRange->Font->Italic = true; // Курсив$fontRange->Font->Underline = true; // Подчеркнутый$fontRange->Font->Name = "Times New Roman"; // Имя шрифта$fontRange->Font->Size = 12; // Размер шрифта ?>
Далее в этом разделе я приведу примеры работы с основными наиболее исползуемыми свойствами и методами: