web - tec / PHP 5 для начинающи
.pdf812 Приложение Д
} else {
print "\n\nПодпись готова\n";
}
fclose($sigfile);
}
?>
Сначала открывается поток стандартного ввода, который остается открытым вплоть до получения последнего ответа пользователя. Затем из каждого последующе+ го пользовательского ввода извлекается первых 100 символов. Эти символы переда+ ются функции trim(), так как, к сожалению, нажатие пользователем клавиши <Enter> передает сценарию жесткий перевод строки. После получения от пользова+ теля всех данных поток ввода закрывается и открывается файл с именем, которое вы+ брал пользователь. Составленная из ответов пользователя подпись записывается в этот файл, после чего он закрывается.
Windows+пользователи могут применить тот же сценарий, заменив строку
shell_exec("touch $sig");
на
'copy con $sig ^Z \n';
Сохраните файл. Сценарий генерирует примерно следующий вывод:
> php sigfile
PHP-генератор файла подписей. Введите свое полное имя: David Mercer
Введите свой адрес (улицу): 148 Mystreet Введите название города: Cape Town Введите название штата: WP
Введите свой почтовый индекс: 8001 Введите номер телефона: 021 555-1234
Введите e-mail-адрес: davidm@doggiesrugby.co.za
Как Вы хотите обозначить эту подпись: MySig
Подпись готова
Заключение
Очевидно, что PHP CLI обладает той же гибкостью и эффективностью, что и PHP в Web+среде. Можно с уверенностью утверждать, что потенциальные варианты приме+ нения ограничены только мощностью самого PHP, что, вообще говоря, нельзя назвать серьезным ограничением. Интерактивность, обеспечиваемая потоками, является осо+ бенно полезной. Системные администраторы могут использовать PHP CLI для решения своих повседневных задач, например, для резервного копирования, рассылки систем+ ных уведомлений и любых других административных функций. Выполняемые по распи+ санию CLI+сценарии совместно с Web+приложениями могут реализовывать такие воз+ можности, о которых раньше разработчики программ на PHP могли только мечтать.
Â
Конфигурация PHP5
Важную роль в работе PHP играет конфигурационный файл, который называется php.ini. При запуске PHP считывает конфигурационный файл и устанавливает за+ данные в нем параметры. Если PHP установлен в виде серверного модуля, то файл считывается один раз; если PHP работает как CGI, то файл считывается для каждого запускаемого экземпляра PHP.
В этом приложении описаны все конфигурационные разделы и параметры php.ini. Многие из этих параметров уже обсуждались на страницах книги, поэтому данное приложение не представляет собой полностью новый материал, а скорее является справочником.
С дистрибутивом PHP поставляется две версии ++++++ php.ini: php.inirecommended и php.ini-dist. Согласно рекомендациям создателей PHP dist+файл подходит для разработки, тогда как для реальной среды лучше всего использовать файл recommended. В этом файле имеется несколько параметров, которые предна+ значены для повышения производительности, но могут нарушать работу старых сце+ нариев, особенно это касается настроек register_global, которые отключены (и не будут использоваться в будущих версиях PHP). В этом приложении описывается содержимое файла php.ini-dist.
Описание файла php.ini-dist
Как уже было сказано, файл php.ini-dist подходит для разработки сценариев, но не рекомендуется для работающих сайтов. В начале книги указывалось, где распо+ ложен этот файл и как PHP находит его во время запуска, а также описывалась орга+ низация php.ini (с примерами многих инструкций и допустимых для них значений).
;;;;;;;;;;;
; ВНИМАНИЕ ;
;;;;;;;;;;;
;Это стандартный файл для новых инсталляций PHP.
;По умолчанию PHP устанавливается с конфигурацией подходящей для
Конфигурация PHP5 815
Настройки языка
Настройки языка представляют собой конфигурационные параметры, которые непосредственно влияют на режим работы PHP. Например, значение On директивы short_open_tag позволяет вместо тегов <?php и ?> использовать для ограничения PHP+кода теги <? и ?> (хотя рекомендуется все+таки использовать длинные теги).
В этом разделе также имеется специальная статья Safe mode (безопасный режим). Безопасный режим и сопутствующие настройки предназначены непосредственно для обеспечения безопасности PHP+приложений. Некоторые функции PHP в случае не+ правильного применения могут предоставить посторонним неограниченный доступ к системе. Безопасный режим ++++++ возможность, которая оказывается полезной, когда администратор системы не может полностью доверять создателю PHP+сценария. На+ пример, безопасный режим позволяет ограничить доступ сценария к файловой сис+ теме. При поддержке сервера виртуального хостинга, на котором работает множество различных Web+сайтов, для создания безопасной системы настоятельно рекомендует+ ся использовать безопасный режим и связанные с ним функции.
Пример настройки безопасного режима: комбинация параметров safe_mode = on
и safe_mode_exec_dir = my_safe_mode_exec_dir (имя каталога вымышленное). При включенном безопасном режиме, с помощью PHP+команды exec можно запус+ кать только те исполняемые файлы, которые находятся в каталоге, указанном дирек+ тивой safe_mode_exec_dir (если он существует).
Еще один хороший пример использования безопасного режима касается перемен+ ных среды. Если разрешить пользователям устанавливать переменные среды, то это может привести к появлению серьезной бреши в безопасности всей системы, поэто+ му, когда безопасный режим включен, директива safe_mode_allowed_env_vars по умолчанию разрешает пользователям изменять только те переменные окружения, ко+ торые начинаются с префикса PHP. Отключение этой настройки позволяет изменять все переменные окружения. Директива safe_mode_protected_env_vars идет еще дальше и не позволяет изменять переменные (заданные списком отделенных друг от друга запятой имен) независимо от того, какой префикс задан в директиве safe_mode_allowed_env_vars.
Таким образом, параметр safe_mode и другие связанные с ним настройки позво+ ляют устанавливать параметры безопасности по+разному в зависимости от того, какие функции должно выполнять приложение. Чтобы защитить систему и пользовательские данные, необходимо тщательно изучить руководства по обеспечению безопасности.
;;;;;;;;;;;;;;;;;;;;
;Настройки языка ;
;;;;;;;;;;;;;;;;;;;;
;Разрешает работу РНР для сервера Apache. engine=On
;Разрешает использовать короткий тэг <?. Иначе будут
;распознаваться только тэги <?php и <script>.
;ПРИМЕЧАНИЕ: использования коротких тегов следует избегать при
;разработке приложений или библиотек, которые задуманы для
;распространения или будут использоваться на чужих PHP-серверах,
;поскольку короткие теги на этих серверах могут не поддерживаться.
;Для создания переносимого распространяемого кода короткие теги
;использовать не следует
short_open_tag=On
; Позволяет использовать тэги в стиле ASP <% %>. asp_tags=Off