php.ini для каждого каталога не анализируется (используя FastCGI)

php.ini для каждого каталога не анализируется (используя FastCGI)
  • Убунту 12.04
  • Апач 2.2.22
  • PHP 5.3.10 [работает как libapache2-mod-fcgid]

[пытаюсь сопоставить сервер разработки с моим веб-хостингом]

Мне удалось заставить fcgi работать с помощью оболочки и зарегистрировать необходимые обработчики, чтобы файлы .html обрабатывались как php. Теперь я пытаюсь понять, почему мои скрипты не запускаются с файлами php.ini в каждом каталоге, которыйкак сообщаетсяповедение по умолчанию.

из phpinfo(), запущенного изhttp://127.0.0.1/NEW/poop.html

Server API                               CGI/FastCGI
Virtual Directory Support                disabled
Configuration File (php.ini) Path        /etc/php5/cgi
Loaded Configuration File                /var/www/johnny/public_html/php.ini
Scan this dir for additional .ini files  /etc/php5/cgi/conf.d

похоже, он прекрасно считывает конфигурацию из [/etc/php5/cgi/php.ini], а также из корневого каталога, который мне пришлось определить в скрипте-оболочке, чтобы он мог прочитать php.ini там

[/var/www/php-fcgi-scripts/johnny/php-fcgi-starter]

#!/bin/sh
PHPRC=/etc/php5/cgi/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/lib/cgi-bin/php -c /var/www/johnny/public_html

Я собрал из двух веб-руководств, чтобы заставить работать FastCGI + VirtualHost, и по частям изучаю, как все это работает. Вот моя настройка VirtualHost:

[/etc/apache2/sites-available/johnny.conf]

<VirtualHost _default_:80>
  ServerName johnny.10.128.0.2.xip.io
  ServerAlias my.dev.server.public.IP
  DocumentRoot /var/www/johnny/public_html/

  <IfModule mod_fcgid.c>
    SuexecUserGroup johnny johnny
    <Directory /var/www/johnny/public_html/>
      Options +ExecCGI -Indexes +FollowSymLinks +MultiViews
      AllowOverride All
      AddHandler fcgid-script .php .htm .html
      FCGIWrapper /var/www/php-fcgi-scripts/johnny/php-fcgi-starter .php
      FCGIWrapper /var/www/php-fcgi-scripts/johnny/php-fcgi-starter .htm
      FCGIWrapper /var/www/php-fcgi-scripts/johnny/php-fcgi-starter .html
      Order allow,deny
      Allow from all
    </Directory>
  </IfModule>

  ErrorLog /var/log/apache2/johnny-error.log
  CustomLog /var/log/apache2/johnny-access.log combined
  LogLevel warn
  ServerSignature Off
</VirtualHost>

но он не будет ничего загружать из [/var/www/johnny/public_html/NEW/php.ini]

проверьте это pastebinдля обзора всего, что я сделал с этим сервером... Мне пришлось ретконить некоторые из этих вещей, чтобы отразить устранение неполадок, которое я сделал позже, так что я надеюсь, что ничего не упустил. Я не пробовал проходить этот список с нуля (пока...). Я также не уверен, есть ли какие-либо важные строки для добавления, так как я сегодня некоторое время возился с инструментами, в основном редактируя, а затем возвращая файлы.

решение1

Думаю, я понял.

Я начал с чистого листа и прошел по каждой строке моего pastebin, используя только необходимые части для PHP как FastCGI, и исследовал, как именно работает каждая маленькая часть. Затем я попробовал много вещей, которые не увенчались успехом, затем осталось только одно, что можно было попробовать, и, возможно, это не «правильный путь», но...

создайте новый <Directory>блок /etc/apache2/sites-available/johnny.confи скопируйте директивы, но с некоторыми изменениями

<Directory /var/www/johnny/public_html/new>
  Options +ExecCGI -Indexes +FollowSymLinks +MultiViews
  AllowOverride All
  AddHandler fcgid-script .php .htm .html
  FCGIWrapper /var/www/php-fcgi-scripts/johnny/php-fcgi-starter_new .php
  FCGIWrapper /var/www/php-fcgi-scripts/johnny/php-fcgi-starter_new .htm
  FCGIWrapper /var/www/php-fcgi-scripts/johnny/php-fcgi-starter_new .html
  Order allow,deny
  Allow from all
</Directory>

затем создайте отдельный стартовый скрипт fcgi/var/www/php-fcgi-scripts/johnny/php-fcgi-starter_new

#!/bin/sh
#PHPRC=/var/www/johnny/new
#export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/lib/cgi-bin/php -c /var/www/johnny/public_html/new

Я обнаружил, что PHPRC=в данном случае это не работает, но параметр -c работает! Вот и все. Это PITA, но для моих целей он работает достаточно хорошо.

Связанный контент