Ошибка: Failed to parse the Currency Converter XML document.
$17 786.09


Ошибка: Failed to parse the Currency Converter XML document.
$952.63


Ошибка: Failed to parse the Currency Converter XML document.
$2 921.55


Ставим РНР

Само собой, сначала надо его скачать. Идем на этот раз на официальный сайт 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 и начинаем его править. Добавляем в конец файла строки:

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

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 указывается разный ip адрес, по которому будет осуществляться доступ к выбранному сайту. Имя сайта и почтовый ящик администратора понятно, что разные. И, наконец, в строчке с documentroot надо проставить имя директории, в которой будут храниться файлы конкретного сайта. Это все.

Ах да, в каталоге virtual придется создать еще один каталог log. В него apache будет писать логии своей работы. Не забудьте это сделать. Сами файлы создавать вручную не надо, они будут созданы apache автоматически. Кстати, если Вы не очень нуждаетесь в логах, можно периодически их очищать, это позволит серверу работать немного быстрее, да и место сэкономит. Сделать это можно только тогда, когда сервер остановлен. Логи можно разнести для каждого сайта отдельно, но если они не так уж и нужны, можно все писать в одно место, что бы легче было удалять.

Как обычно, сохраните файл конфигурации и попробуйте запустить apache. Если ошибка – ищите ее в указанной строке.

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

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

<!-- hpinfo(); -->

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

Все, php работает.

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

Пришло время обратить свое внимание на второй файл, который мы скачали. Он имеет расширение .zip и представляет собой обычный архив. Попробуйте распаковать его. Получилось? Как видите, это тоже php, но уже без программы с установкой. Ищите в нем директорию «extensions». И скопируйте ее полностью к себе в каталог с установленным php.

Это – и есть дополнительные модули, которые нужны нам для работы с изображениями, службами сильной криптографии и т.д. А если и не нужны сразу, то некоторые готовые разработки могут их использовать, так что пусть будут.

Теперь надо подключить новые модули к php. Делается это во втором важном для нас конфигурационном файле – php.ini. Его готового варианта нет, придется создать самостоятельно. Надо отметить, что и без этого файла php сможет эффективно работать, но это не даст нам возможность настраивать нужные параметры и лишит гибкости. Да и не правильно это.

Итак, в дистрибутиве ищем файл php.ini-recomm ended и переименовываем его в 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, так как он еще и позволяет в привычной оболочке работать с файлами не отходя от, так сказать, кассы.

Устанавливаем все это добро. Готово

 

Интересное

Общая информация по XP
1.1. Что такое WindowsXP? Это новая OC от компании Microsoft, в которой сделана попытка объединить две, ранее существовавшие независимо, линейки W9x и NT. Первоначально этот проект назывался...
Подробнее...
Firefox: Настройка RSS
Много слышал об RSS и даже несколько раз пытался пользоваться специальными программами для чтения. Но устанавливать дополнительное ПО не хочется, тем более что в Firefox есть встроенный клиент...
Подробнее...
Невизуальные классы в Delphi
В этом обзоре мне хотелось бы рассказать про несколько классов Delphi, которым обычно в книгах и других обучающих материалах уделяется (если уделяется) весьма скромное внимание. Это так называемые...
Подробнее...
Средства Delphi 7 для...
Рассмотрим наборы компонентов, которые присутствуют в библиотеке компонентов delphi 7, предназначенных для работы с базами данных. Вы узнаете, что такое набор данных, источник данных и...
Подробнее...
Как избавиться от подмены...
Как избавиться от подмены домашней страницы?Ребенок залез на очень неприятный сайт... Теперь эта хреновина прописалась где-то в глубинах системы (у нас установлен millenium), и при каждой...
Подробнее...
10 советов по обеспечению...
Используйте Windows Server 2003 Версия Windows Server 2003 с поддержкой службы каталогов «Активная директория» (Active Directory, далее AD) гораздо безопаснее версии Windows 2000. Это не значит,...
Подробнее...
Безопасная настройка PHP...
ПредисловиеПриходится признать, что операционные системы Windows не собираются уходить в небытие. Игнорировать этот факт нельзя, поэтому нужно научиться мирно сосуществовать с таковыми. Как...
Подробнее...
Dr.Web защищает от опасных...
Как известно, уже в течение длительного периода происходит спам-рассылка известного «штормового червя», маскирующегося под поздравительную открытку и детектируемого антивирусом Dr.Web как...
Подробнее...
Adobe Photoshop и Corel Draw
Уважаемые читатели, что возникает в ваших головах при словосочетании «компьютерная графика»? Конечно, у рядового пользователя сразу возникает в голове какой-нибудь Терминатор или иное детище...
Подробнее...
Оптимизация памяти в...
Windows XP предоставляет больше возможностей по оптимизации памяти, нежели Windows 2000. Вместе с тем, она и требует больше свободных ресурсов. Данная статья поможет вам настроить вашу систему для...
Подробнее...