- Php flag engine off
- Changing PHP configuration via the Windows registry
- Other interfaces to PHP
- Настройка во время выполнения
- Php flag engine off
- User Contributed Notes
- Disable PHP in a directory with Apache .htaccess
- RemoveHandler and RemoveType
- php_flag engine off
- To be on the safe side
- Check Out These Related posts:
Php flag engine off
When using PHP as an Apache module, you can also change the configuration settings using directives in Apache configuration files (e.g. httpd.conf ) and .htaccess files. You will need «AllowOverride Options» or «AllowOverride All» privileges to do so.
There are several Apache directives that allow you to change the PHP configuration from within the Apache configuration files. For a listing of which directives are PHP_INI_ALL , PHP_INI_PERDIR , or PHP_INI_SYSTEM , have a look at the List of php.ini directives appendix.
Sets the value of the specified directive. Can be used only with PHP_INI_ALL and PHP_INI_PERDIR type directives. To clear a previously set value use none as the value.
Note: Don’t use php_value to set boolean values. php_flag (see below) should be used instead.
Used to set a boolean configuration directive. Can be used only with PHP_INI_ALL and PHP_INI_PERDIR type directives.
php_admin_value name value
Sets the value of the specified directive. This can not be used in .htaccess files. Any directive type set with php_admin_value can not be overridden by .htaccess or ini_set() . To clear a previously set value use none as the value.
php_admin_flag name on|off
Used to set a boolean configuration directive. This can not be used in .htaccess files. Any directive type set with php_admin_flag can not be overridden by .htaccess or ini_set() .
Example #1 Apache configuration example
php_value include_path ".:/usr/local/lib/php" php_admin_flag engine on php_value include_path ".:/usr/local/lib/php" php_admin_flag engine on
PHP constants do not exist outside of PHP. For example, in httpd.conf you can not use PHP constants such as E_ALL or E_NOTICE to set the error_reporting directive as they will have no meaning and will evaluate to 0. Use the associated bitmask values instead. These constants can be used in php.ini
Changing PHP configuration via the Windows registry
When running PHP on Windows, the configuration values can be modified on a per-directory basis using the Windows registry. The configuration values are stored in the registry key HKLM\SOFTWARE\PHP\Per Directory Values , in the sub-keys corresponding to the path names. For example, configuration values for the directory c:\inetpub\wwwroot would be stored in the key HKLM\SOFTWARE\PHP\Per Directory Values\c\inetpub\wwwroot . The settings for the directory would be active for any script running from this directory or any subdirectory of it. The values under the key should have the name of the PHP configuration directive and the string value. PHP constants in the values are not parsed. However, only configuration values changeable in PHP_INI_USER can be set this way, PHP_INI_PERDIR values can not, because these configuration values are re-read for each request.
Other interfaces to PHP
Regardless of how you run PHP, you can change certain values at runtime of your scripts through ini_set() . See the documentation on the ini_set() page for more information.
If you are interested in a complete list of configuration settings on your system with their current values, you can execute the phpinfo() function, and review the resulting page. You can also access the values of individual configuration directives at runtime using ini_get() or get_cfg_var() .
Настройка во время выполнения
Поведение модуля Apache PHP зависит от настроек в php.ini . Настройки конфигурации из php.ini могут быть переопределены через настройки флага php_flag в конфигурационном файле сервера или локальном файле .htaccess .
Пример #1 Отключение парсера PHP для директории при помощи .htaccess
Имя | По умолчанию | Меняемо | Список изменений |
---|---|---|---|
engine | «1» | PHP_INI_ALL | Доступно начиная с версии PHP 4.0.5. |
child_terminate | «0» | PHP_INI_ALL | Доступно начиная с версии PHP 4.0.5. |
last_modified | «0» | PHP_INI_ALL | Доступно начиная с версии PHP 4.0.5. |
xbithack | «0» | PHP_INI_ALL | Доступно начиная с версии PHP 4.0.5. |
Для подробного описания констант PHP_INI_*, обратитесь к разделу Где могут быть установлены параметры конфигурации.
Краткое разъяснение конфигурационных директив.
Включает или выключает интерпретатор PHP. Эта директива в действительности очень полезна в модуле Apache PHP. Она используется сайтами, которым необходимо разрешить или запретить интерпретатор PHP на основе директорий или виртуальных хостов. Устанавливая engine off по необходимости в файле httpd.conf , можно разрешить или запретить интерпретатор PHP.
Эта настройка управляет тем, могут ли скрипты PHP требовать окончания дочерних процессов по завершении запроса. Смотрите также apache_child_terminate() .
Посылает скриптам PHP дату модификации как заголовок Last-Modified для этого запроса.
Исполнение файлов с битом запускаемого как PHP, независимо от расширения.
Php flag engine off
Поведение модуля Apache PHP зависит от настроек в php.ini . Настройки конфигурации из php.ini могут быть переопределены через настройки флага php_flag в конфигурационном файле сервера или локальном файле .htaccess .
Пример #1 Отключение парсера PHP для директории при помощи .htaccess
Имя | По умолчанию | Место изменения | Список изменений |
---|---|---|---|
engine | «1» | PHP_INI_ALL | |
child_terminate | «0» | PHP_INI_ALL | |
last_modified | «0» | PHP_INI_ALL | |
xbithack | «0» | PHP_INI_ALL |
Для подробного описания констант PHP_INI_*, обратитесь к разделу Где могут быть установлены параметры конфигурации.
Краткое разъяснение конфигурационных директив.
Включает или выключает интерпретатор PHP. Эта директива в действительности очень полезна в модуле Apache PHP. Она используется сайтами, которым необходимо разрешить или запретить интерпретатор PHP на основе директорий или виртуальных хостов. Устанавливая engine off по необходимости в файле httpd.conf , можно разрешить или запретить интерпретатор PHP.
Эта настройка управляет тем, могут ли скрипты PHP требовать окончания дочерних процессов по завершении запроса. Смотрите также apache_child_terminate() .
Посылает скриптам PHP дату модификации как заголовок Last-Modified для этого запроса.
Исполнение файлов с битом запускаемого как PHP, независимо от расширения.
User Contributed Notes
Disable PHP in a directory with Apache .htaccess
If you have a directory which users can upload files into it’s a good idea for security reasons to disable server-side parsing of scripts such as PHP. This post shows a couple of options using Apache’s .htaccess files.
RemoveHandler and RemoveType
The handlers for PHP are added using AddType in the Apache configuration, and should be able to be removed in a .htaccess file like so (adding whatever additional extensions you need):
RemoveHandler .php .phtml .php3 RemoveType .php .phtml .php3
However this doesn’t seem to work for me. I don’t know why. If anyone has any ideas please leave your thoughts in the comments section below.
php_flag engine off
Another way to disable PHP in a .htaccess file is by adding a line like this:
This method did work for me when I tested it.
I assume this will still invoke the PHP handler which will then not parse the script when it knows what various PHP settings are enabled and disabled. Note that when PHP is disabled then the end user will get the source code of the PHP script in their browser.
To be on the safe side
Just to be certain that PHP isn’t parsed in the selected directory, and given RemoveHandler and RemoveType didn’t seem to work for me, it may be best to add all three lines like so:
RemoveHandler .php .phtml .php3 RemoveType .php .phtml .php3 php_flag engine off