- 우분투 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이지만 제 목적에는 충분히 잘 작동합니다.