2014-09-05 4 views
0

SuPHP를 FastCGI로 대체하려고합니다. 이전에 다른 소유자와 그룹이있는 폴더가있었습니다. 각 그룹은 www- 데이터를 회원으로 보유하고 있습니다. 브라우저를 사용하여 PHP 파일을 실행하면 해당 파일의 소유자로 실행됩니다. 파일이 사용자 A가 소유 한 그래서 경우 (그룹 A - 구성원으로서 www가 데이터 및 A), 그것은Apache 2.4와 우분투에서 FastCGI php5-fpm 14.04

shell_exec('whoami') => return A 

지금, 나는 FastCGI를 설치 한 사용자로 실행되고 PHP 파일을 실행하도록 구성했습니다. 여기

내가 무슨 일을하고있는 중이 야

shell_exec('whoami') => return www-data 

, I가 소유하고 같은 파일을 실행할 때

<IfModule mod_fastcgi.c> 
       AddHandler php5-fcgi .php 
       Action php5-fcgi /php5-fcgi 
       Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi 
       FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization 
     </IfModule> 

내 문제는 지금 내 PHP5-fpm.conf 파일입니다?

답변

0

whoami 현재 스크립트가 실행중인 현재 사용자를 보여줍니다.

fastcgi를 통한 우분투에서는 해당 파일을 소유 한 사용자가 아닌 www-data 사용자로 스크립트를 실행합니다. 이는 설계 상 웹 스크립트가 액세스가 허용되지 않는 파일에 액세스하지 못하도록 제한하는 데 도움이됩니다. 이 동작을 변경해야하는 경우 사용자 apache가 설정 파일의 어딘가에서 실행되도록 변경해야합니다. 내 시스템에서

이이 두 환경 변수를 설정하여 /etc/apacyhe2/envvars에 지정됩니다

export APACHE_RUN_USER=www-data 
export APACHE_RUN_GROUP=www-data 
+0

fastcgi에서 suPHP 동작을 복제 할 수 없습니까? 내가 필요한 것은 PHP 파일을 소유자로 실행하는 것입니다 (suPHP를 사용하는 이유입니다). 아파치 사용자를 변경해도 내 문제는 해결되지 않습니다.단일 사용자가 아닌 PHP 파일을 실행해야하며 각 파일은 소유자 인 사용자로 실행해야합니다. –

+0

아니요, 그렇지 않습니다. 오히려 특이한 행동을 제공하는 것이 suPHP의 목적입니다. 필요한 경우 suPHP를 계속 사용해야합니다. – baldrs

+0

오,하지만이 스레드는 http://www.fastcgi.com/archives/fastcgi-developers/2011-May/000717.html에서 똑같은 일에 대해 이야기했는데 그 사람이 해결할 수있었습니다. 나는 어떻게 확실하지 않다! –

1

당신은 FastCGI를 + PHP-FPM과 suPHP를 대체 할 수 있지만 설정으로 사용자와 당 FPM 풀을해야합니다 (사용자/풀 당 별도의 FastCgiExternalServer 지시문이 필요하며 이는 가상 호스트 당 유효합니다.).

listen = /var/run/php5-fpm-username.sock 
listen.owner = www-data 
listen.group = www-data 
listen.mode=0660 
user = ownerusername 
group = ownerusergroup 
pm = ondemand 
pm.max_children = 30 
pm.process_idle_timeout = 120s 
pm.max_requests = 50000 
catch_workers_output = yes 

listen.owner 및 listen.group FPM 풀 : 당신이 뭔가를 사용할 수있는 FPM 풀 구성에서 다음

<FilesMatch "\.php$"> 
    SetHandler php5-fcgi 
</FilesMatch> 
Action php5-fcgi /php5-fcgi-username 
Alias /php5-fcgi-username /usr/lib/cgi-bin/php5-fcgi-username 
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi-username -socket /var/run/php5-fpm-username.sock -pass-header Authorization 

과 : 주어진 가상 루트에 예를 들어

, 매개 변수는 웹 서버의 사용자/그룹입니다 (해당 사용자 만이 PHP-FPM 소켓에 연결할 수 있습니다).

사용자 및 그룹 FPM 풀 매개 변수는 PHP 스크립트를 실행하는 데 사용되는 사용자 및 그룹입니다.

사용자가 10 명인 경우 10 개의 FPM 풀이 필요합니다.

많은 히트가 있지만 구성 튜닝이 어려울 때 성능은 FastCGI + PHP-FPM에서 훨씬 좋습니다. 초당 적중 횟수가 많지 않은 사이트/응용 프로그램의 경우 FastCGI 및 PHP-FPM에 신경 쓰지 않을 것입니다. 게다가 suPHP를 사용하면 웹 서버를 다시 시작하지 않고도 편집 할 수있는 사용자 당 php.ini를 얻을 수 있습니다. PHP-FPM을 사용하면 모든 풀이 동일한 php.ini를 공유하므로 다시로드하기 위해 FPM 데몬을 다시 시작해야합니다.

관련 문제