2014-11-05 2 views
0

Мне нужно включить enable_post_data_reading для определенного набора путей на сайте, и у меня возникли проблемы с его работой. Ситуация выглядит следующим образом:php_flag, установленный в виртуальном хосте, игнорируется

Apache 2.2.22, PHP 5.4.34

Попытка использовать в директиве установить флаг.

Используется переписывание URL (это сайт Drupal), поэтому файлы htaccess для каждого каталога не будут работать.

Если я установил enable_post_data_reading в «off» в php.ini, данные сообщения обрабатываются так, как ожидалось, и работают определенные страницы, но это разрушает остальную часть сайта. Однако я, по крайней мере, доказал, что настройка работает вообще.

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

Однако, если я устанавливаю enable_post_data_reading на «off» внутри директивы, он игнорируется.

Аналогично, если я установил его на «в» в php.ini, то установите его на «выключен» на виртуальном хосте, он останется включенным.

Казалось бы, что, хотя эта конструкция работает отлично:

<VirtualHost 192.169.0.1:80> 
    # Virtual host name, docroot, etc. 

    <Location /apply/> 
     SetEnv foo bar 
    </Location> 
</VirtualHost> 

... если я это сделать:

<VirtualHost 192.169.0.1:80> 
    # Virtual host name, docroot, etc. 

    <Location /apply/> 
     php_flag enable_post_data_reading on 
    </Location> 
</VirtualHost> 

инструкция php_flag игнорируется.

Итак, что я делаю неправильно? Есть ли другое место, где я мог бы установить флаг, который будет работать?

Заранее спасибо ...

ответ

1

ОК, так что мы сделали значительный объем испытаний. Похоже, что директива Location не работает должным образом, когда URL был переписан, так что флаг PHP не установлен.

Мы обнаружили, однако обходным:

  • Установите директиву Местоположение виртуального хоста, чтобы вызвать на файл (например, /apply.php.) Вместо пути.
  • Создайте символическую ссылку в верхнем веб-каталоге index.php с любым именем, которое вы использовали для местоположения.
  • Добавьте новый файл rewriteRule в файл .htaccess, перед стандартными правилами Drupal, которые перенаправляют все на index.php, так что все с путями, на которые нужно повлиять флагом PHP, вместо этого переписывается в символическую ссылку.

Это похоже на то, что нам нужно: флаг PHP установлен, а Drupal обрабатывает запрос как обычно. Скорее косвенные, но это лучше, чем любые другие возможные решения.

Смежные вопросы