Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программируем на PHP - вопросы и ответы.


Информационный Канал Subscribe.Ru

Здравствуйте! Выпуск номер 62
рассылки сайта РНР для всех!

Вы получили этот выпуск рассылки, так как являетесь подписчиком рассылок сайта http://subscribe.ru Рассылка выходит еженедельно, и предлагает Вам авторские материалы по теме программирования на скриптовом языке гипертекстового препроцессора РНР. Кроме того - есть система вопросов и ответов, обмен ссылками и баннерами, раздел Ваши письма и многое другое.
Форум сайта
Архив рассылки

Сайт автора


 Я предлагаю Вам скачать полную версию трех рассылок вместе с картинками. Это будет архив из одного файла, распаковав который, вы получите документ с предыдущими и этой рассылкой. Дальше я буду просто менять содержимое этого архива или добавлять новые.
Итак - ссылка для скачивания - http://virtual.brest.by/rass.phtml
 
 Ставим РНР

Само собой, сначала надо его скачать. Идем на этот раз на официальный сайт http://www.php.net и ищем там раздел DOWNLOADS.
Собственно, искать не приходится, он в самом верху первый. После того, как откроется страничка, в самом верху есть ссылки для скачивания исходных кодов, нам они не нужны. Ищем Windows Binaries и скачиваем два файла в этом разделе.
На момент написания этого материала – версии 4.3.3. Но, конечно, я рекомендую Вам скачать более свежую версию, так как в ней будут наверняка исправлены старые ошибки и не придется возиться с апгрейдом. Опять же, не забывайте уточнять у хостера, что за версия у него стоит, и если она отличается от последней, номер которой Вы нашли на сайте в меньшую сторону, стоит подумать о том, не сменить ли этот хостинг?
Итак, если Вы уже скачали эти два файла, начнем их устанавливать. Обратите внимание, что один с расширением .exe, а второй - .zip. Так и должно быть, но начнем мы с первого.
Запустите .exe файл. По традиции жмите «NEXT» (как эти инсталляторы любят заставлять нас делать много ненужных движений!). А дальше – что-то новенькое, соглашаться с условиями лицензии надо кнопкой «I Agree». Выбираем тип установки Standart, и опять подошли к выбору директории.
Ой, не зря, не зря мы создали отдельную директорию, вот и пригодилась она нам. Открою маленький секрет. Если когда-то придется переустанавливать окна или переносить сервер на другой компьютер, таких сложных телодвижений как сейчас делать не придется. Надо будет только скопировать нашу директорию usr и настроить имя диска.
Так что смело указываем РНР путь e:/usr/php/ и устанавливаем его туда. Придется еще ввести адрес SMTP сервера и свой адрес электронной почты. Введите туда что-нибудь. Вероятнее всего, нам в локале это не понадобится. Все равно отправлять почту Вы будете уже из Интернета, а там свои настройки.
Ах да, еще надо будет выбрать сервер, с которым будет работать PHP. Как Вы помните, это Apache. Если в процессе копирования появятся какие-нибудь диалоговые окна, не стоит обращать на них особого внимания.
В принципе, на этом установка почти закончена. Осталось установить дополнительные модули и научить сервер Apache распознавать код PHP. Это не сложно.


Подключаем PHP к Apache

Для начала откройте конфигурационный файл Apache, о котором мы уже говорили немножко выше. Он расположен в папке conf там, куда Вы установили Apache, и имеет хитрое название httpd.conf. Не обращайте внимание на расширение, откройте его с помощью любого текстового редактора, подойдет хоть Блокнот, хоть Word (в последнем очень удобно искать и заменять нужные пути).
Открыли? Как видите, в нем много текста, перед которым стоит символ «#». Это – подробнейшие комментарии. Как правило, они на английском, но есть варианты русского Apache. Может, Вам повезет, но это не важно, так как настроек не так уж и много.
Ищем эту строчку:

#AddType application/x-httpd-php php

Снимаем с нее комментарий (убираем символ «#» в начале строки), если он там есть. Это позволит серверу распознавать файлы с расширением .php. Сразу же после этой строки добавьте такие настройки:

ScriptAlias /_php/ "путь к РНР/"
Action application/x-httpd-php "/_php/php.exe"

Особо стоит пояснить «путь к PHP/». В нашем случае это было бы: «e:/usr/php/». Не забудьте про последний слэш, он там не случайно. Этим нехитрым способом мы создаем синоним для директории с установленным препроцессором PHP и связываем все файлы с кодом PHP непосредственно с ним самим.
Сохраните файл конфигурации на диск и попробуйте запустить Apache. Если все нормально, то ОК. Если Вы получили сообщение об ошибке, просмотрите указанную в нем строку, скорее всего это синтаксическая ошибка. Исправьте ее и попробуйте снова.
Будем считать этот этап пройденным.

Виртуальные хосты в Apache

Как я уже говорил, сервера в сети устроены таким образом, что на одном могут быть десятки и сотни виртуальных серверов. Нам придется организовать что-то подобное у себя на компьютере, что бы иметь возможность держать дома не один сайт, а сразу сколь угодно много. Давайте научимся делать 2-3, остальные Вы сможете добавить аналогично им.
Опять открываем знакомый нам файл конфигурации httpd.conf и начинаем его править. Добавляем в конец файла строки:

<VirtualHost 127.0.0.1>
ServerAdmin имя почтового ящика
ServerName имя сервера
DirectoryIndex index.php3 index.phtml index.php index.htm index.html index.shtml index.shtm
DocumentRoot "e:/usr/public_html/host/virtual"
ScriptAlias /cgi-bin/ "e:/usr/public_html/host/virtual/cgi-bin/"
ErrorLog e:/usr/public_html/host/virtual/logs/error.log
CustomLog e:/usr/public_html/host/virtual/logs/access.log common
</VirtualHost>

<VirtualHost 127.0.0.2>
ServerAdmin имя почтового ящика
ServerName имя сервера
DirectoryIndex index.php3 index.phtml index.php index.htm index.html index.shtml index.shtm
DocumentRoot "e:/usr/public_html/host/start"
ScriptAlias /cgi-bin/ "e:/usr/public_html/host/virtual/cgi-bin/"
ErrorLog e:/usr/public_html/host/virtual/logs/error.log
CustomLog e:/usr/public_html/host/virtual/logs/access.log common
</VirtualHost>

И таким же образом дальше, по мере необходимости. Обратите внимание на различия. В строке с VirtualHost указывается разный IP адрес, по которому будет осуществляться доступ к выбранному сайту. Имя сайта и почтовый ящик администратора понятно, что разные. И, наконец, в строчке с DocumentRoot надо проставить имя директории, в которой будут храниться файлы конкретного сайта. Это все.
Ах да, в каталоге virtual придется создать еще один каталог LOG. В него Apache будет писать логии своей работы. Не забудьте это сделать. Сами файлы создавать вручную не надо, они будут созданы Apache автоматически. Кстати, если Вы не очень нуждаетесь в логах, можно периодически их очищать, это позволит серверу работать немного быстрее, да и место сэкономит. Сделать это можно только тогда, когда сервер остановлен. Логи можно разнести для каждого сайта отдельно, но если они не так уж и нужны, можно все писать в одно место, что бы легче было удалять.
Как обычно, сохраните файл конфигурации и попробуйте запустить Apache. Если ошибка – ищите ее в указанной строке.

Тестирование PHP

Давайте теперь убедимся, что PHP-скрипты работают. Для этого создадим в директории d:/usr/public_html/host/virtual файл index.php со следующим содержанием:

<? phpinfo(); ?>

Теперь наберите в браузере: http://127.0.0.1. Должна отобразиться страница с разнообразной информацией о PHP, которая генерируется функцией phpinfo().
Все, PHP работает.


Установка дополнительных модулей и настройка

Пришло время обратить свое внимание на второй файл, который мы скачали. Он имеет расширение .zip и представляет собой обычный архив. Попробуйте распаковать его. Получилось? Как видите, это тоже PHP, но уже без программы с установкой. Ищите в нем директорию «extensions». И скопируйте ее полностью к себе в каталог с установленным PHP.
Это – и есть дополнительные модули, которые нужны нам для работы с изображениями, службами сильной криптографии и т.д. А если и не нужны сразу, то некоторые готовые разработки могут их использовать, так что пусть будут.
Теперь надо подключить новые модули к PHP. Делается это во втором важном для нас конфигурационном файле – php.ini. Его готового варианта нет, придется создать самостоятельно. Надо отметить, что и без этого файла PHP сможет эффективно работать, но это не даст нам возможность настраивать нужные параметры и лишит гибкости. Да и не правильно это.
Итак, в дистрибутиве ищем файл php.ini-recommended и переименовываем его в php.ini. Редактировать можно, как обычно, любым текстовым редактором, так как он, как и конфигурационный файл Apache, представляет из себя простой текст.
Открыли? Ищите в нем раздел Error handling and logging.
Этот раздел отвечает за настройки ошибок, выдаваемых на экран. Очень важно для нас видеть эти ошибки, что бы понимать, как работает скрипт. А точнее – почему он не работает.
Где-то чуть ниже будет раскомментированная (комментарий в этом файле – это точка с запятой) переменная error_reporting = E_ALL. Можно оставить ее такой, какая она и есть, но приготовьтесь получать сообщения об ошибках по поводу и без повода. Например, если происходит попытка использования неинициализированной переменной. Это не страшно, так как в этом случае переменная автоматически инициализируется и приравнивается или к нулю, или к пустой строке, в зависимости от типа, но сообщение об ошибке все равно будет выдано на экран. Итак, что бы избежать такого безобразия, надо прописать тут: error_reporting = E_WARNING. Вот полный список доступных тут значений, и Вы можете выбрать более подходящие для Вашего сайта:
1 E_ERROR фатальные ошибки времени выполнения
2 E_WARNING предупреждения времени выполнения (нефатальные ошибки)
4 E_PARSE ошибки разбора времени компиляции
8 E_NOTICE уведомления времени выполнения (менее серьёзные, чем предупреждения)
16 E_CORE_ERROR фатальные ошибки при начальном старте PHP только в PHP 4
32 E_CORE_WARNING предупреждения (нефатальные ошибки) при начальном старте РНР только в
PHP 4
64 E_COMPILE_ERROR фатальные ошибки времени компиляции только в PHP 4
128 E_COMPILE_WARNING предупреждения времени компиляции (нефатальные ошибки) только в PHP 4
256 E_USER_ERROR генерируемое пользователем сообщение об ошибке только в PHP 4
512 E_USER_WARNING генерируемое пользователем предупреждение только в PHP 4
1024 E_USER_NOTICE генерируемое пользователем уведомление только в PHP 4
2047 E_ALL всё вышеуказанное

Еще чуть дальше найти параметр display_errors = Off и поставить его в ON включив, таким образом, выдачу сообщений об ошибках именно на экран, а не в логфайлы. Там просто не удобно искать эти ошибки.
Осталось всего ничего – найти раздел Data Handling и в нем переменную register_globals = Off установить в ON, тем самым, сделав доступными для считывания переменные окружения непосредственно по их имени, а не через специальный массив переменных окружения.
Осталось прописать путь, по которому находятся наши модули расширения. Он задается в переменной extension_dir. Задайте его правильно, в соответствии с тем, где именно лежит у Вас папка с модулями. Если этот путь указан не правильно, при загрузке ненайденного модуля PHP будет выдавать ошибку.
И, наконец, самое главное – полученный таким образом файл php.ini надо скопировать в директорию, куда установлена Windows (одноименная директория в корне диска C, как правило). Это важно, так как именно там PHP будет искать этот файл. В последних версиях его же можно положить в директорию с установленным сервером Apache. Таким образом, становится возможным иметь на одном компьютере несколько настроек PHP одновременно и использовать их по мере надобности.
Еще хочу обратить Ваше внимание на тот факт, что загрузка и использование дополнительных модулей может в значительной степени снижать производительность интерпретатора PHP. Лучше всего точно знать и использовать в работе только те модули, которые нужны при работе сайта.
Теперь еще об одном важном для нас моменте. Во всех руководствах по РНР (и в этой книге тоже, кстати) написано, что даные, полученные из формы, или переданные по ссылке вот так: name.phtml?a=1&b=2 автоматически становятся переменными PHP $a и $b. На самом деле это может быть не совсем так. Дело в том, что в целях безопасности, начиная с версии 4.1, РНР настраивается по умолчанию так, чтобы переданные значения не назначались переменным. Потому, что таким образом легко затереть уже существующие в скрипте переменные и взломать скрипт. Хоть этот факт и является сомнительным, так как нужные переменные всегда можно отследить и защитить, но все-таки это факт.
За назначение переменных отвечает параметр register_globals в php.ini. Если register_globals=on, то все полученные скриптом данные будут назначены соответствующим переменным. Если register_globals=off, то получить значение переменной можно обратившись к массиву, соответствующему способу передачи данных в скрипт. Например: Передаем методом GET: name.phtml?a=1.

echo $_GET['a'] напечатает цифру 1.

Если получаем данные из формы, отправленной методом POST, то все поля этой формы содержатся в массиве $_POST, и получить доступ к ним можно точно так же, только обратившись к массиву $_POST.
То же касается и серверных переменных, таких, как $REMOTE_ADDR, $PHP_SELF. При register_globals=off их не существует, и получить их можно, обратившись к массивам $_SERVER, $_ENV или функцией getenv - getenv('HTTP_REFERER');. Разработчики PHP настоятельно рекомендуют (впрочем, для меня это не понятно) выключать register_globals, и пользоваться данными, полученными от пользователя, только обращаясь к соответствуюим массивам.
Просто учитывайте этот факт и используйте тот или иной метод в зависимости от своих возможностей.
На этом какие-либо установки заканчиваются. Осталось поговорить об некоторых удобствах.

Вопросы переносимости и совместимости

Один раз, настроив свой сервер, приходится задумываться о том, как избежать данной процедуры каждый раз при переустановке системы. Этот процесс, в принципе, не так уж и сложен, однако хотелось бы попроще, как всегда. И кстати, такая возможность есть.
Если Вы устанавливали сервер, парсер PHP (как только его не обзывают, но это все тот же PHP) и свои сайты в один каталог, перед переустановкой системы надо сделать его резервную копию. Этим Вы застрахуете себя от возможных проблем, хотя они и не предвидятся.
Итак, система переустановлена. В принципе, больше ничего не надо, Вам понадобится только восстановить два файла – это «php.ini» для того, что бы восстановились все настройки, сделанные Вами ранее для PHP (если они не делались, забудьте об этом файле, PHP будет работать с установками по умолчанию). И – «hosts» в каталоге windows_dir/system32/drivers/etc. Это служебный файл виндов, и служит он для сопоставления имен.
Вот его пример с моего компьютера:

127.0.0.1 localhost
127.0.0.6 204040
127.0.0.2 virtual
127.0.0.3 price
127.0.0.4 start
127.0.0.5 test

Как видите – он просто позволяет вместо цифр обращаться к сайту по имени. Кстати, месторасположение его от версии к версии Windows меняется, но можете воспользоваться поиском, что бы найти этот файл. Смело его редактируйте в соответствии со своими потребностями. И конечно, храните резервные копии.
Итак, если диск не меняется, достаточно восстановить эти два файла. Если же по каким-то причинам есть необходимость сменить диск, на котором будет работать сервер, надо открыть файл «httpd.conf», расположенный в папке «conf» там, куда Вы установили Apache. Открыть этот файл можно любым текстовым редактором, да хоть Word-ом. Потом при помощи поиска и замены произведите замену имени старого диска на новый, и после этого сохраните файл.
Тоже самое проделайте и над php.ini, о нем мы говорили чуть выше. Все, Ваш сервер готов для работы. Можно попробовать протестировать его работу в новых условиях, и если все в порядке, приступать к программированию, если нет, искать ошибку на основе информации, которая выдается окно DOS-сессии Apache. Как правило, одну за другой все ошибки устранить не представляется сложным.

Организация рабочего места

Нам понадобятся: текстовый редактор и FTP-менеджер. Это для начала. В принципе, никаких ограничений на эти программы нет, Вы можете использовать любые, только желательно, что бы текстовый редактор обеспечивал нумерацию строк и элементарную подсветку синтаксиса. Я рекомендую CuteHTML из комплекта CuteFTP. Доводы – обеспечивает все вышеперечисленные требования, просто в обслуживании, не требует инсталляции (точнее – интегрируется в систему при первом запуске).
Его же (я имею в виду не редактор, конечно) можно использовать и в качестве FTP-менеджера, но я применяю обычный TotalCommander, так как он еще и позволяет в привычной оболочке работать с файлами не отходя от, так сказать, кассы.
Устанавливаем все это добро. Готово? Тогда приступим к изучению PHP.
 


Наши друзья

http://virtual.brest.by - Виртуальный Брест. Региональный информационно - развлекательный портал города Бреста. Чат, форум, статьи, услуги, объявления, недвижимость, каталог сайтов - это и многое другое ждет Вас на страницах сайта.
http://price.brest.by - сайт прайсов фирм города Бреста. Поиск, подсчет, реклама и т.д.
http://204040.com - Интернет-магазин компьютерного салона Успех г. Брест
http://tweak.tut.by - http://tweak.bresttelecom.by - Оптимизация и настройка компьютера. Если Вас интересуют различные аспекты настройки Вашего мегагерцевого друга, Вам надо посетить сайт посвященный настройке и оптимизации. Кроме того - список последних версий популярных программ и свежие новости, а так же чат, форум и многое другое!


автор рассылки Андрей Кухарчик / http://virtual.brest.by/php



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу


В избранное