ディレクトリごとの 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 を動作させるために 2 つの Web チュートリアルをまとめて、その仕組みを少しずつ学んできました。これが私の 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]からは何も読み込まれません。

このペーストビンをチェックしてくださいこのサーバーで行ったすべての作業を確認するには... 後で行ったトラブルシューティングを反映するために、これらの作業の一部を変更する必要がありました。そのため、何も見逃していないことを願っています。このリストを最初から実行しようとはしていません (まだ...)。また、今日はしばらくツールを使っていて、主にファイルを編集してから元に戻していたため、追加する重要な行があるかどうかもわかりません。

答え1

わかったと思います。

私は最初からやり直し、PHP を FastCGI として必要な部分だけを使って pastebin の各行を順に調べ、それぞれの細かい部分がどのように動作するかを正確に調べました。その後、さまざまなことを試しましたが失敗し、試す方法が 1 つだけ残っていました。おそらくこれは「正しい方法」ではないのでしょうが...

新しい<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 パラメータは機能します。それだけです。面倒ですが、私の目的には十分機能します。

関連情報