Ошибка: 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, так как он еще и позволяет в привычной оболочке работать с файлами не отходя от, так сказать, кассы.
Устанавливаем все это добро. Готово