- •Оглавление
- •Что такое интернет
- •Готовимся к созданию Web-страниц
- •Железо, железо и еще раз железо...
- •Домашняя эргономика — безопасность прежде всего!
- •Программное обеспечение для Web-мастера
- •Выбор хостинга
- •Знакомьтесь — РНР
- •История создания РНР
- •Установка РНР
- •Настройка РНР для Apache
- •Виртуальные хосты в Apache
- •Тестирование РНР
- •Установка и настройка дополнительных модулей
- •Переносимость и совместимость
- •Синтаксис РНР
- •Возможности РНР
- •Работа с базами данных
- •HTTP-аутентификация средствами РНР
- •Работа с изображениями
- •Поддержка закачки файлов
- •Поддержка HTTP-cookie
- •Использование регулярных выражений
- •Обработка ошибок
- •Управление электронными письмами
- •Вывод на экран и переменные в РНР
- •Простейшие арифметические операции
- •Простейшие логические операции
- •Циклы
- •Массивы
- •Работа со строками
- •Сессии
- •Программирование на РНР
- •Сравнение чисел
- •Вложение файлов в документ
- •Простейший счетчик посещений
- •Обработка форм
- •Отправление почты
- •Отправление письма в HTML-формате
- •Дата по-русски
- •Счетчик посещений с использованием базы данных
- •Счетчик персональной посещаемости
- •Сохраняем информацию о посещениях
- •Ах, баннеры, баннеры...
- •Счетчик посещений с выводом информации на экран
- •Счетчик сессий
- •Создание динамического меню
- •«Грабим» странички
- •Голосование на сайте
- •Гостевая книга
- •Технология создания
- •Свой чат — это просто
- •Использование специального привата
- •Интернет-магазин
- •Технология создания
- •Сервисы интернет-магазина
- •Архив рассылок
- •Совет первый: а нужно ли вам это?
- •Совет второй: забудьте все советы
- •Пример системы безопасности
- •HTTP-аутентификация в РНР
- •Защита программы
- •РНР в вопросах и ответах
- •Приложения
- •Приложение 3. Некоторые функции РНР
- •Приложение 4. Cookie
- •Приложение 5. Методы передачи данных POST и GET
- •Приложение 6. Время Unix
44 |
Знакомьтесь — РНР |
В каталоге virtual нужно создать еще один каталог — LOG для log-файлов Apache. Сами файлы создавать вручную не надо, они будут созданы Apache автоматически.
СОВЕТ
Если вы не очень нуждаетесь в log-файлах, можно периодически их удалять. Это позволит серверу работать немного быстрее, да и место сэкономит. Сделать это можно только тогда, когда сервер остановлен. Log-файлы можно сохранять в разные папки для каждого сайта отдельно, но если они не очень нужны, можно задать в одну папку, чтобы легче было удалять.
Как обычно, сохраните файл конфигурации и попробуйте запустить Apache. Если ошибка — ищите ее в указанной строке.
Тестирование РНР
Убедимся, что РНР-скрипты работают. Для этого создадим в директории d:/usr/public_html/host/virtual файл test.php со следующим содержанием:
<? phpinfo(); ?>
Теперь наберите в браузере: h t t p : //127 . 0 . 0 . 1/test . php . Должна отобразиться страница с разнообразной информацией о РНР, которая генерируется функцией phpinfo () (рис. 15).
Все, РНР работает.
Установка и настройка дополнительных модулей
Обратите внимание на второй файл, который мы скачали. Он имеет расширение zip и представляет собой обычный архив. Распакуйте его. Найдите в нем директорию extensions и скопируйте ее полностью к себе в каталог с установленным РНР.
Это — дополнительные модули, которые нужны для работы с изображениями, службами улучшенной криптографии и т.д.
А если и не нужны сразу, то некоторые готовые разработки могут их использовать, так что пусть будут.
Установка РНР |
45 |
Рис. 15. Страница информации о РНР, сгенерированная функцией phpinfo()
Теперь надо подключить новые модули к РНР. Делается это во втором важном конфигурационном файле — php.ini. Готового его варианта нет, придется создать самостоятельно. Надо отметить, что и без этого файла РНР сможет работать, но у нас не будет возможности настраивать нужные параметры.
Итак, в дистрибутиве ищем файл php.ini-recommended и переименовываем его в php.ini. Редактировать можно, как обычно, в любом текстовом редакторе, так как он, как и конфигурационный файл Apache, представляет собой простой текст.
Открыли? Ищите в нем раздел Error handling and logging (рис.16).
46 |
Знакомьтесь — РНР |
Этот раздел отвечает за настройку ошибок, выводимых на экран. Нам очень важно видеть эти ошибки, чтобы понимать, как работает скрипт. А точнее — почему он не работает.
Puc. 16. Раздел Error handling and logging в файле php.ini
Здесь чуть ниже будет переменная error _ reporting = E_ALL. Конечно, можно оставить ее такой, какая она есть, но тогда приготовьтесь получать сообщения об ошибках по поводу и без повода. Например, если происходит попытка использования неинициализированной переменной (см. ниже). Это не страшно, так как в этом случае переменная автоматически инициализируется и приравнивается или к нулю, или к пустой строке, в зависимости от типа, но сообщение об ошибке все равно появится на экране. Чтобы избежать таких ситуаций, надо прописать тут: error_reporting = E_WARNING. В табл. 1 приведен полный
Установка РНР |
47 |
список доступных значений: вы можете выбрать более подходящие для вашего сайта.
Таблица 1.Типы ошибок в PHP
Значение |
Константа |
1 |
Е_ERROR |
2 |
E_WARNING |
4 |
Е_PARSE |
8 |
E_NOTICE |
Описание
Фатальные ошибки на стадии выполнения
Предупреждения на стадии выполнения (нефатальные ошибки)
Ошибки анализа на стадии компиляции
Уведомления на стадии выполнения (менее серьезные, чем предупреждения)
16 |
E_CORE_ERROR |
Фатальные ошибки при запуске РНР |
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 |
Все вышеуказанное |
Еще чуть дальше нужно найти параметр display_errors = Off и установить его в On, включив, таким образом, выдачу сообщений об ошибках именно на экран, а не в log-файлы. Там просто неудобно искать эти ошибки.
48 |
Знакомьтесь — РНР |
|
|
|
|
В разделе Data Handling переменную register_globals = Off установим в On (рис. 17). Так мы сделали доступными для считывания переменные окружения непосредственно по их имени, а не через специальный массив переменных окружения.
Рис. 17. Настройка переменных окружения в файле php.ini
Теперь нужно указать путь к папке, в которой находятся наши модули расширения. Он задается в переменной extension_dir. Задайте его правильно, в соответствии с тем, где именно находится у вас папка с модулями. Если этот путь указан неправиль-
Переменные окружения — это параметры операционной системы, содержащие такие сведения, как имя диска, путь или имя файла. Например, переменная окружения TEMP задает папку, в которой хранятся временные файлы программ.
{Примеч. ред.)
Установка РНР |
49 |
но, при загрузке ненайденного модуля РНР будет выдавать ошибку.
ВНИМАНИЕ
Полученный таким образом файл php.ini надо скопировать в директорию, в которой установлена Windows ( как правило, одноименная директория в корневом каталоге диска С). Именно там РНР будет искать этот файл. В последних версиях РНР его можно сохранить в директорию с установленным сервером Apache.
Учтите, что загрузка и использование дополнительных модулей может в значительной степени снижать производительность интерпретатора РНР. Лучше всего использовать в работе только те модули, которые нужны при работе сайта.
Теперь еще об одном важном моменте. Во всех руководствах по РНР написано, что данные, полученные из формы или переданные по ссылке вот так: name.phtml?a=l&b=2, автоматически становятся переменными РНР $а и $b. На самом деле это может быть не совсем так. Дело в том, что в целях безопасности, начиная с версии 4.1, РНР настраивается по умолчанию так, чтобы переданные значения не назначались переменным, потому что таким образом легко уничтожить уже существующие в скрипте переменные и взломать скрипт. Хотя это является сомнительным, так как нужные переменные всегда можно отследить и защитить, но все-таки это факт.
За назначение переменных отвечает параметр register _ globals в php.ini. Если register _ global s = On, то все полученные скриптом данные будут назначены соответствующим переменным. Если register _ global s = Off, то получить значение переменной можно, обратившись к массиву, соответствующему способу передачи данных в скрипт.
На этом установку можно считать завершенной. Осталось поговорить о некоторых удобствах.
