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]에서는 아무것도 로드되지 않습니다.

이 페이스트빈을 확인해 보세요이 서버에 수행한 모든 작업을 살펴보려면... 나중에 수행한 문제 해결을 반영하기 위해 이 작업 중 일부를 다시 검토해야 했기 때문에 아무것도 놓치지 않았으면 좋겠습니다. 나는 이 목록을 처음부터 끝까지 실행해 보지 않았습니다(아직...). 또한 오늘 한동안 도구를 사용하여 주로 파일을 편집한 다음 되돌리기 때문에 추가할 중요한 줄이 있는지 확실하지 않습니다.

답변1

나는 그것을 알아낸 것 같아요.

저는 처음부터 새로 시작하여 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이지만 제 목적에는 충분히 잘 작동합니다.

관련 정보