ресурс для начинающих веб-разработчиков
комплексные веб-услуги по созданию сайтов

Справочный материал по основным языкам программирования и верстки сайтов.

Готовая методика создания простых и сложных динамичных сайтов, с использованием PHP и MySQL.

Использование веб-редактора Adobe Dreamweaver в разработке сайтов.

Использование графических редакторов Adobe Flash, Adobe Photoshop, Adobe Fireworks в подготовке веб-графики.

Разработка веб-сайтов под "ключ".

Разработка отдельных фрагментов сайтов, консультации по вопросам верстки веб-страниц и веб-программирования.

Получение информации об окружении PHP. Динамическая загрузка расширений

Получение информации об окружении PHP

Для выдачи информации о том, как сконфигурирован PHP, существует несколько функций.

Определение загруженных расширений

Доступные наборы функций, а также конкретные функции в каждом из этих наборов легко определить с помощью функции get_loaded_extensions() и get_extension_funcs().

Функция get_loaded_extensions() возвращает массив, содержащий все наборы функций, доступные PHP в текущий момент. Если имя конкретного набора или расширения предать в качестве параметра функции get_extension_funcs(), она возвратит массив функций в этом наборе.

С помощью этих двух функций сценарий выводит список всех функций, доступных в текущей инсталяции PHP.

list_functions.php —этот сценарий выводит все расширения, доступные PHP, а для каждого расширения — маркированный список содержащихся в нем функций

<?php
echo ' Наборы функций, доступные в данной инсталяции: <br> ';
$extensions = get_loaded_extensions();
foreach ($extensions as $each_ext)
{
echo "$each_ext <br>";
echo ' <ul> ';
$ext_funcs = get_extension_funcs($each_ext);
foreach($ext_funcs as $func)
{
echo "<li>$func</li>";
}
echo '</ul>';
}
?>

Обратите внимание, что функция get_loaded_extensions() вообще не принимает параметров, а функции get_extension_funcs() нужен только один параметр — имя расширения.

Подобная информация может оказаться полезной, если неоюходимо определить, упешноли установлено расширение, либо когда вы разрабатываете переносимый код, который генерирует полезные информативные сообщения во время своей инсталляции.

Определение владельца сценария

Определить пользователя, являющегося владельцем запущенного сценария, можно с помощью функции get_current_user():

echo get_current_user();

Такая информация может понадобиться при разрешении вопросов в правами доступа.

Определение даты последнего изменения сценария

Сейчас очень модно помещать на каждую страницу сайта дату ее последнего обновления.

Для определения даты последнего изменения сценария используется функция getlastmod():

echo date ( 'g:i a, j M Y', getlastmod());

Функция возвращает метку времени Unix, которую можно передать в функцию date(), чтобы преобразовать ее в более читабельный формат.

Динамическая загрузка расширений

Если библиотеки расширений не скомпилированы при инсталяции, их можно загружать во время выполнения, используя функцию dl(). Параметром функции является имя библиотечного файла. В UNIX имена таких файлов заканчиваются расширением .so, а в Windows —расширением .dll.

Пример вызова функции dl():

dl ( ' php_gd2.dll' );

Этот вызов динамически загружает расширение gd2 (генерация изображений) на машине, работающей под управлением Windows.

Каталог, в котором содержится файл с динамически загружаемой библиотекой, здесь не учитывается: он должет быть задан в конфигурационном файле php.ini с помощью директивы extension_dir.

Если при динамической загрузке расширений возникают проблемы, необходимо проверить директиву enable_dl в файле php.ini. Если она отключена, то динамическая загрузка расширений запрещена. Эта директива может быть отключена по соображениям безопасности, например, если на машине работаете не только вы. Функцию dl() также нельзя использовать, если PHP выполняется в безопасном режиме.

Временное изменение среды исполнения

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

Просматривать и изменять директивы можно с помощью функций ini_get() и ini_set(). Пример использования этих функций показан в простом сценарии.

iniset.php —этот сценарий изменяет значение директив в файле php.ini

<?php
$old_max_execution_time = ini_set('max_execution_time', 120);
echo "Старый лимит времени: $old_max_execution_time <br>";
$max_execution_time = ini_get('max_execution_time');
echo " Новый лимит времени: $max_execution_time <br>";
?>

Функция ini_set() принимает два параметра. Первый — это имя изменяемой конфигурационной директивы из файла php.ini, а второй — ее новое значение. Функция возвращает предыдущее значение новой директивы.

В данном случае значение максимального времени выполнения сценария вместо 30 секунд по умолчанию (или другого значения, установленного в php.ini) устанавливается равным 120 секундам.

Функция ini_get() просто возвращает значение директивы, имя которой передается в параметре как строковое выражение. В сценарии эта функция используется только для проверки того, что значение директивы действительно изменилось.

Таким образом могут быть установлены не все INI-опции. С каждой опцией связан уровень, на котором она может быть установлена. Ниже перечислены возможные уровни:

  • PHP_INI_USER — эти значения можно изменять в сценариях с помощью ini_set().
  • PHP_INI_PERDIR — эти значения можно изменять в файлах php.ini либо .htaccess или httpd.conf, если используется Apache. Факт, что вы изменять их в файлах .htaccess, означает возможность модификации значений на уровне каталогов.
  • PHP_INI_SYSTEM — эти значения можно изменять в файлах php.ini или httpd.conf.
  • PHP_INI_ALL — эти значения можно изменять в любом из перечисленных выше мест, то есть, в сценарии, файле .htaccess и в файлах httpd.conf или php.ini.

Полный список INI-опций и уровней, на которых они могут быть изменены, доступен в руководстве PHP по адресу http://www.php.net/ini_set.

Выделение цветом элементов исходного кода

В состав PHP входит система выделения цветом синтаксиса, подобная таковым во многих интегрированных средах разработки. Она очень удобна для передачи кода другим разработчикам или опубликования его на веб-странице для обсуждения.

Функции show_source() и highlight_file() идентичны. В качестве параметра обеим функциям передается имя файла. Этот файл должен содержать PHP-код, иначе получится бессмысленный результат. Рассмотрим пример:

show_source ('list_functions.php');

В окне веб-браузера это будет выглядеть ТАК.

Переданный функции файл отображается в браузере, причем фрагменты текста выделяются различными цветами в зависимости от того, являются ли они строкой, комментарием, ключевым словом или HTML-дескриптором. Все это выводится на фоне заданного цвета. Содержимое, не подпадающее ни под одну из перечисленных категорий, выводится цветом по умолчанию.

Функция highlight_string() работает аналогично, но ее аргументом является строка, а результатом — вывод в браузере в формате с выделенным синтаксисом.

Цвета для выделения синтаксиса можно установить в файле php.ini. Соответствующий раздел файла выглядит следующим образом:

; Colors for Syntax Highlighting mode. Anything that's acceptable in
; <span style="color: ???????"> would work.
;highlight.string = #DD0000
;highlight.comment = #FF9900
;highlight.keyword = #007700
;highlight.bg = #FFFFFF
;highlight.default = #0000BB
;highlight.html = #000000

Цвета опеределяются в стандартном для HTML RGB-формате.

Использование PHP в командной строке

Многие короткие программы можно выполнять в командной строке. В среде Unix такие программы обычно написаны на языке сценариев оболочки, а в среде Windows они имеют вид командных файлов.

Возможно, вы обратитесь к PHP из-за необходимости выполнения проектов веб, однако те возможности, которые делают PHP мощным инструментом для веб, позволяют рассматривать его и как полезную улиту командной строки.

Существуют три способа запуска PHP-сценариев из командной строки: из файла через канал и путем ввода непосредственно в командной строке.

Для выполнения PHP-сценария, который хранится в файле, необходимо убедиться, что путь к исполняемому файлу PHP-интерпретатора (php или php.exe, в зависимомти от операционной системы) находится в пути поиска, а затем вызвать его и указать имя файла сценария в качестве параметра. Например:

php myscript.php

Файл myscript.php представляет собой обычный PHP-сценарий, то есть содержит нормальные операторы внутри дескрипторов PHP.

Для передачи кода через канал необходимо запустить любую программу, которая генерирует PHP-код, и передает ее выходные данные по каналу в исполняемый файл php. В следующем примере с помощью команды echo генерируется однострочная программа, которая затем выполняется:

echo '<?php for ($i = 1; $i < 10; $i++) echo $i; ?>' | php

И здесь PHP-код должен быть заключен в пару дискрипторов PHP (<?php и ?>). Также обратите внимание, что в приведенном примере echo —это Unix-программа, а не языковая конструкция PHP.

Короткие однострочные программы, проще непосредственно передавать в командной строке, как показано ниже:

php -r ' for ($i=1; $i<10; $i++) echo $i;

Здесь ситуация несколько иная. PHP-код, передаваемый в строке, не заключен в дескрипторы PHP. Если вы попытаетесь поместить этот код между <?php и ?>, возникнет синтасическая ошибка.

Количество полезных PHP-программ, которые можно написать в командной строке, практически неограничено. Можно создатьпрограммы установки разработанных вами PHP-приложений. Вы можете на скорую руку набросать сценарий, форматирующий текст перед его размещением в базу данных. Вы можете даже подготовить сценарий, выполняющий множество повторяющихся задач, которые вам приходится выполнять ежедневно в командной строке. Хорошим кандидатом на оформление в виде сценария командной строки может быть копирование всех PHP-файлов, файлов изображений и структур таблицMySQL из веб-сервера, предназначенного для разработки, на производственный веб-сервер.