2012-07-02 5 views
2

http://mydomain.com/blogtest에 워드 프레스를 호스팅하려고 시도했지만 http://wiki.nginx.org/WordPress에서 가이드를 따라했지만 여전히 "입력 파일이 지정되지 않았습니다." 모든 요청. PHP-FPM와 Nginx의 1.2.1과 PHP 5.3.6을 사용Nginx의 하위 디렉토리에 Wordpress 호스팅

다음

Nginx에 설정 파일입니다

fastcgi_param QUERY_STRING  $query_string; 
fastcgi_param REQUEST_METHOD  $request_method; 
fastcgi_param CONTENT_TYPE  $content_type; 
fastcgi_param CONTENT_LENGTH  $content_length; 

fastcgi_param SCRIPT_NAME  $fastcgi_script_name; 

# Next line added by AdamJT for php-fpm 
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 

#Concrete5 fix by AdamJT 
#fastcgi_param PATH_INFO   $fastcgi_script_name; 

fastcgi_param REQUEST_URI  $request_uri; 
fastcgi_param DOCUMENT_URI  $document_uri; 
fastcgi_param DOCUMENT_ROOT  $document_root; 
fastcgi_param SERVER_PROTOCOL $server_protocol; 

fastcgi_param GATEWAY_INTERFACE CGI/1.1; 
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; 

fastcgi_param REMOTE_ADDR  $remote_addr; 
fastcgi_param REMOTE_PORT  $remote_port; 
fastcgi_param SERVER_ADDR  $server_addr; 
fastcgi_param SERVER_PORT  $server_port; 
fastcgi_param SERVER_NAME  $server_name; 

# PHP only, required if PHP was built with --enable-force-cgi-redirect 
fastcgi_param REDIRECT_STATUS 200; 

I : 여기

upstream wptest { 
    server 127.0.0.1:9000; 
} 

server { 
    listen 80; 
    server_name mydomain.com; 

    access_log logs/access.log; 
    error_log logs/error.log; 

    location /blogtest { 
    access_log logs/blogtest.access.log; 
    error_log logs/blogtest.error.log; 

    root /opt/myblogwp; 

    index index.php; 
    try_files $uri $uri/ /blogtest/index.php; 

    } 

    location ~ \.php$ { 
    include /usr/local/nginx/conf/fastcgi_params; 
    fastcgi_split_path_info ^(/blogtest)(/.*)$; 
    fastcgi_intercept_errors on; 
    fastcgi_pass wptest; 
    } 
} 

내 fastcgi_params 파일입니다 /usr/local/php/lib/php.ini를 편집하여 cgi.fix_pathinfo = 0;

답변

3

location /blogtest {}이 파일이 당신의 WP 사이트의 루트 디렉토리가

/opt/myblogwp/blogtest 

에서 검색되는 것을 의미 있다는 사실을 숙지? location 대신 alias을 사용해야 할 수도 있습니다. 별칭을 사용하면 가상 디렉토리/somedir /에 루트 디렉토리를/opt/someotherdir /로 설정할 수 있습니다. 또한, 나는 꽤 fastcgi_split_path_info에 익숙하지 않다. 그러나 뭔가 빠져있는 것처럼 보인다. 의 예를 보면 : 귀하의 예를 들어

Here's an example. The script show.php receives as argument the string article/0001. The following configuration will handle path splitting properly: 

location ~ ^.+\.php { 
    (...) 
    fastcgi_split_path_info ^((?U).+\.php)(/?.+)$; 
    fastcgi_param SCRIPT_FILENAME /path/to/php$fastcgi_script_name; 
    fastcgi_param PATH_INFO $fastcgi_path_info; 
    fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; 
    (...) 
} 
Requesting /show.php/article/0001 sets SCRIPT_FILENAME to /path/to/php/show.php and PATH_INFO to /article/0001. 

- 당신이 실제 PATH_INFO와 SCRIPT_FILENAME을 설정하는 방법이 표시되지 않습니다 - 당신은 기본값을 사용하고 ... 난 당신이 이러한 매개 변수를 조정할 필요가 같아요 비트. 오류는 No input file specified입니다. 즉, PHP에는 script_filename이 전달되지 않습니다. 그래서 당신은 추적하고 마지막에이 같은 받아야 있도록 PATH_INFO와 SCRIPT_FILENAME를 해결해야합니다

/path/to/wpresssite/index.php$fastcgi_script_name 
+0

별명이뿐만 아니라 그것을 대체 위치 내에서 사용 할 수 있습니다. 별칭으로 루트를 교체 할 때도 동일한 오류가 발생합니다. PATH_INFO와 SCRIPT_FILENAME을 어떻게 추적합니까? – Adam

+0

저는 PHP에 익숙하지 않아서 실제로 php 사이트를 실행해야 할 때 uwsgi를 사용하고 있습니다. 어떤 FCGI 서버를 사용합니까 - 127.0.0.1:9000에서 무엇을 듣고 있습니까? 일부 세부 로그를 활성화하십시오 - 모든 FCGI 매개 변수를 덤프 할 수 있다면 문제가 무엇인지 알 수있을 것입니다. 또한 PATH_INFO를 정적 경로 (WP 사이트를 가리 키도록)로 설정하고 SCRIPT_FILENAME 값을 조정 해보십시오. – Tisho

+0

http://wiki.nginx.org/PHPFcgiExample : '일반적인 오류'보기 – Tisho

관련 문제