Htaccess php value php flag

Htaccess php value php flag

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.

Читайте также:  Html цвет фона фиолетовый

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() .

Источник

Параметры php_value, php_flag и ошибка 500

Дилер HostCMS

При запуске некоторых CMS и скриптов на части хостингов или своем VDS (сервере) на месте сайта может появиться ошибка 500 Internal Server Error. В этой статье мы разберем самую частую причину этой ошибки — параметры php_value и php_flag, указанные в файле .htaccess.

Причина ошибки 500 от php_value, php_flag

Основной причиной появления ошибки 500 на месте сайта при использовании параметров php_value и php_flag в файле .htaccess является отсутствие модуля PHP в загруженных модулях Apache.

Также к ошибке может привести неверный синтаксис данного параметра, например, если Вы указали синтаксис от php.ini — «memory_limit=64M» (php_value memory_limit=64M).

Ошибку могут вызвать и параметры php_admin_value и php_admin_flag, которые нельзя использовать в файле .htaccess.

Исправление ошибки 500 от php_value, php_flag

В том случае, если ошибку Internal Server Error вызвало отсутствие модуля mod_php, есть два варианта решения проблемы: установка данного модуля или удаление параметров php_value, php_flag из .htaccess.

Подробней об установке модуля mod_php

Если Вы используете контейнер, VDS или Dedicated сервер, то для решения проблемы Вы можете просто установить модуль PHP на веб-сервер Apache, что несколько сложнее, чем удалить параметры из .htaccess.

При использовании виртуального хостинга модуль PHP не получится установить, поэтому здесь сразу нужно переходить ко второму варианту решения проблемы…

Об удалении параметров php_value, php_flag

Удалить параметры из файла .htaccess можно тремя способами:

Добавить параметр Ifmodule в файл .htaccess. Данный способ позволит веб-серверу Apache игнорировать настройки php_value и php_flag. Синтаксис в .htaccess в этом случае будет выглядеть следующим образом:

Также стоит добавить еще одну секцию для PHP 7:

Это позволит автоматически активировать эти параметры при смене конфигурации VDS, выделенного сервера или переезде на другой хостинг в том случае, если там будет установлен как PHP 5, так и PHP 7 в качестве модуля Apache.

Закомментировать php_value, php_flag в .htaccess. Для комментирования данных параметров в файле .htaccess используется символ «#», который указывается в начале каждой строки.

Просто убрать php_value, php_flag из .htaccess. Вы можете просто стереть все строки php_value и php_flag из .htaccess.

Обращаем Ваше внимание, что мы рекомендуем использовать только первые два способа удаления параметров из .htaccess, что позволяет сохранить параметры в файле и избежать их утери, так как эти параметры понадобятся для дальнейшего использования.

О синтаксисе параметров php_value, php_flag

Также для исправления ошибки 500 Internal Server Error мы рекомендуем проверить синтаксис параметров, который должен иметь вид:

При указании синтаксиса для php.ini:

веб-сервер Apache выдаст ошибку.

php_admin_value и php_admin_flag в .htaccess

Параметры php_admin_value и php_admin_flag нельзя использовать в файле .htaccess, поэтому исправить ошибку 500 можно только удалением этих параметров.

Источник

Что вам нужно знать об .htaccess

Polina Shneider

.htaccess — это дополнительный конфигурационный файл Apache, который позволяет настраивать работу веб-сервера для каждой отдельной директории, не влияя на глобальные настройки Apache. Локальная аналогия httpd.conf. Обычно он отвечает за редиректы и управление доступом к директориям.

Название начинается с точки. Можно сказать, это файл без названия с расширением htaccess.

Настройки .htaccess действуют на каталог, в котором он расположен, и на все дочерние каталоги. Создайте файл и поместите в нужную вам директорию. Например, в корень проекта.

Теперь нужно его наполнить. Посмотрим, что вообще умеет .htaccess, но для начала изучим пример простейшего редиректа.

mod_rewrite и редиректы

Убедитесь, что в конфигурационном файле Apache httpd.conf активирован mod_rewrite. То есть, раскомментирована соответствующая строка:

Или, если не хотите открывать в текстовом редакторе файл, можно воспользоваться командой в терминале:

mod_rewrite — это модуль Apache, предназначенный для преобразования URL-ов. Рассмотрим на примере, как он работает. Допустим, пользователь вводит следующий адрес:

C помощью mod_rewrite можно отправить содержание с другого URL, например такого:

Зачем это нам? Легко догадаться, что писать полный путь до страницы долго и просто неудобно. Посетителям сайта не нужно думать о внутренней структуре сайта — им важно максимально быстро попасть на искомую страницу.

В адресной строке пользователь будет всё также видеть введенное им:

Это пример самого простого редиректа.

Сразу к практике

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

php_value short_open_tag 1 php_value upload_max_filesize 10M php_value post_max_size 10M RewriteEngine On RewriteBase / RewriteRule ^(application|modules|system) — [F,L] RewriteCond % !-f RewriteCond % !-d RewriteRule .* index.php/$0 [PT,L]

  • php_value установка строковых и числовых значений
  • php_flag устанавливает логические значения (да/нет)

Общий синтаксис директив

Директива short_open_tag разрешает использование короткого синтаксиса для оформления PHP-кода:

upload_max_filesize определяет максимальный размер загружаемого файла.

А post_max_size устанавливает максимально допустимый размер данных, отправляемых методом POST.

RewriteEngine

Включает/выключает механизм mod_rewrite.

RewriteRule

RewriteRule просто преобразовывает строку в соответствии с регулярными выражениями.

Синтаксис: RewriteRule regular_expression

# На входе RewriteRule «index.php» RewriteRule ^index.php main.php [R] # На выходе: «index.php» -> «main.php»

Мы преобразовали index.php в main.php и выполнили редирект.

Важно: RewriteRule обычно принимает два аргумента: что нужно заменить и на что нужно заменить. Если нам не нужно выполнять замену то можно записать в виде:

Символ «-» означает «не преобразовывать»

RewriteBase

После всех RewriteRule, в силу вступает RewriteBase. Если получившийся после преобразований запрос является относительным и отличается от исходного, RewriteBase восстановит его, сделав абсолютным. RewriteBase просто допишет себя к запросу слева. Потому что значение RewriteBase — путь от корня сайта до .htaccess. В нашем случае .htaccess лежит прямо в корне, поэтому:

Синтаксис: RewriteBase URL-path-from-.htaccess-file-to-site-root

# .htaccess находится в /dir/ # Путь от корня сайта до .htaccess /dir/ RewriteBase /dir/ # Запрос http://example.com/dir/logo.gif # На вход RewriteRule попадает «logo.gif» RewriteRule ^logo.gif$ logo-orange.gif # После RewriteRule: «logo.gif» -> «logo-orange.gif» # После RewriteBase: «logo-orange.gif» -> «/dir/logo-orange.gif»

Regular expressions

Регулярные выражения, которые вам могут встретиться в .htaccess.

Back-Reference example:

RewriteRule ^/([a-z]+)/(.*)$ /home?page=$1&id=$2

Источник

Оцените статью