fast-cgi 아래의 lighttpd2 및 php는 403 "권한 거부"를 반환합니다.

fast-cgi 아래의 lighttpd2 및 php는 403 "권한 거부"를 반환합니다.

lighttpd2는 개발 중이지만 사용을 시작하려는 곳에는 충분합니다. 나는 그것을 설치하고 가상 호스팅 등을 작동시키는 고비를 극복했습니다.

  • PHP 5.6.6 (cgi-fcgi) (빌드: 2015년 2월 20일 17:27:21)
  • lighttpd-angel/2.0.0 - 빠르고 가벼운 웹 서버 구축 날짜: 2015-03-17 13:42:32
  • 아치 리눅스 | 리눅스 3.18.6-1
  • VMWare 워크스테이션 11.1.0 빌드 2496824

그러나 PHP는 나에게 가장 큰 골칫거리를 안겨준다.

/etc/lighttpd2/php.conf다음과 같습니다.

if phys.path =$ ".php" {
        log.write "Accessing php file";
        fastcgi "unix:/srv/http/php.sock";
}

Socks는 /var/run/lighttpd2/ 아래에 있었지만 액세스/디버깅 목적으로 전체 문서 루트가 있는 /srv/http로 옮겼습니다.

/etc/lighttpd2/lighttpd.conf모습은 이렇습니다.

setup {

        module_load [
                "mod_accesslog",
                "mod_dirlist",
                "mod_vhost"
                "mod_fastcgi"
        ];

        listen "0.0.0.0:80";
        listen "[::]:80";

        log [
                "info" => "/var/log/lighttpd2/info.log",
                "error" => "/var/log/lighttpd2/error.log",
                "abort" => "/var/log/lighttpd2/error.log",
                "backend" => "/var/log/lighttpd2/backend.log",
                "debug" => "/var/log/lighttpd2/debug.log",
                default => "/var/log/lighttpd2/error.log"
        ];
        accesslog "/var/log/lighttpd2/access.log";
        accesslog.format "%h %V %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"";

        static.exclude_extensions [ ".php", ".pl", ".fcgi", "~", ".inc" ];

}

include "/etc/lighttpd2/mimetypes.conf";
include "/etc/lighttpd2/vhost.conf";
include "/etc/lighttpd2/php.conf";

#docroot "/srv/http";
index [ "index.php", "index.html", "index.htm", "default.htm", "index.lighttpd.html" ];

dirlist;
static;

static마지막에 댓글을 달아야 할지 모르겠습니다 .

마지막으로 내 PHP "시작 스크립트"는 다음과 같습니다.

#!/bin/sh

exec 2>&1

PHP_FCGI_CHILDREN=2 \
PHP_FCGI_MAX_REQUESTS=10000 \
LANG=C LC_ALL=C \
exec /usr/bin/spawn-fcgi -n -s /srv/http/php.sock -u www-data -U www-data -- /usr/bin/php-cgi

내 로그는 거의 비어 있지만 내용은 다음과 같습니다.

시스템 시작 로그

Mar 17 17:14:21 ArchKB lighttpd2[30955]: 2015-03-17 17:14:21 CET: info (angel_plugin.c:166): activate
Mar 17 17:14:21 ArchKB lighttpd2[30955]: 2015-03-17 17:14:21 CET: info (angel_plugin.c:177): done
Mar 17 17:14:21 ArchKB lighttpd2[30955]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30956]: 17/Mar/2015 17:14:21 CET (debug) server.c:765: Reached state: suspended (dest: down)
Mar 17 17:14:21 ArchKB lighttpd2[30955]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30956]: 17/Mar/2015 17:14:21 CET (debug) server.c:677: Try reaching state: stopping (dest: down)
Mar 17 17:14:21 ArchKB lighttpd2[30955]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30956]: 17/Mar/2015 17:14:21 CET (debug) server.c:765: Reached state: stopping (dest: down)
Mar 17 17:14:21 ArchKB lighttpd2[30955]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30956]: 17/Mar/2015 17:14:21 CET (debug) server.c:677: Try reaching state: down (dest: down)
Mar 17 17:14:21 ArchKB lighttpd2[30955]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30956]: 17/Mar/2015 17:14:21 CET (debug) server.c:765: Reached state: down (dest: down)
Mar 17 17:14:21 ArchKB lighttpd2[30955]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30956]: 17/Mar/2015 17:14:21 CET (info) lighttpd_worker.c:141: going down
Mar 17 17:14:21 ArchKB lighttpd2[30955]: 2015-03-17 17:14:21 CET: debug (angel_server.c:367): instance released
Mar 17 17:14:21 ArchKB lighttpd2[30955]: 2015-03-17 17:14:21 CET: info (angel_main.c:94): going down
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: info (angel_plugin.c:166): activate
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: info (angel_plugin.c:171): activate: core
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: debug (angel_server.c:184): Instance (30976) spawned: /usr/lib/lighttpd-2.0.0/lighttpd2/lighttpd2-worker
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: info (angel_plugin.c:177): done
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: info (angel_main.c:90): parsed config file
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30976]: 17/Mar/2015 17:14:21 CET (debug) lighttpd_worker.c:105: config path: /etc/lighttpd2/lighttpd.conf
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30976]: 17/Mar/2015 17:14:21 CET (debug) plugin_core.c:1254: loaded module 'mod_accesslog'
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30976]: 17/Mar/2015 17:14:21 CET (debug) plugin_core.c:1254: loaded module 'mod_dirlist'
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30976]: 17/Mar/2015 17:14:21 CET (debug) plugin_core.c:1254: loaded module 'mod_vhost'
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30976]: 17/Mar/2015 17:14:21 CET (debug) plugin_core.c:1254: loaded module 'mod_fastcgi'
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30976]: 17/Mar/2015 17:14:21 CET (debug) server.c:765: Reached state: loading (dest: suspended)
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30976]: 17/Mar/2015 17:14:21 CET (debug) server.c:677: Try reaching state: suspended (dest: suspended)
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30976]: 17/Mar/2015 17:14:21 CET (debug) server.c:765: Reached state: suspended (dest: suspended)
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: debug (angel_plugin_core.c:638): listen to ipv4: '0.0.0.0:80' (port: 80)
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: debug (angel_plugin_core.c:679): listen to ipv6: '::' (port: 80)
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30976]: 17/Mar/2015 17:14:21 CET (debug) server.c:677: Try reaching state: warmup (dest: running)
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30976]: 17/Mar/2015 17:14:21 CET (debug) server.c:765: Reached state: warmup (dest: running)
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30976]: 17/Mar/2015 17:14:21 CET (debug) server.c:677: Try reaching state: running (dest: running)

오류 로그는 비어 있지만 다음이 info.log표시됩니다.

17/Mar/2015 17:14:21 CET (info) server.c:58: Got signal, shutdown

debug.log설명하다:

17/Mar/2015 17:12:29 CET (debug) server.c:677: Try reaching state: suspending (dest: down)
17/Mar/2015 17:12:29 CET (debug) server.c:765: Reached state: suspending (dest: down)
17/Mar/2015 17:12:29 CET (debug) server.c:677: Try reaching state: suspended (dest: down)
17/Mar/2015 17:12:29 CET (debug) server.c:765: Reached state: running (dest: running)

그리고 access.log(index.php를 요청한 후) 다음과 같이 표시됩니다.

192.168.253.1 192.168.253.130 - [17/Mar/2015:17:12:36 +0100] "GET / HTTP/1.1" 403 3744 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36"

파일에 액세스

내가 모든 것을 주석 처리하면PHP, 다음 콘텐츠가 포함된 다운로드 개체로 파일을 가져옵니다.

<?php
    header($_SERVER['SERVER_PROTOCOL'] . ' 302 Ok', true, 302);
    print 'OK!';
?>

header()모드는 CGI이기 때문에 lighttp가 헤더를 망치지 않도록 하기 위한 것입니다.~해야 한다최종 결과에 나쁜 영향을 미치지 않습니다).

권한은 다음과 같습니다:

-rwxrwxrwx 1 www-data www-data       84 Mar 17 16:40 index.php
srw-r----- 1 www-data www-data        0 Mar 17 16:47 php.sock
-rw-r--r-- 1 root     root            5 Mar 17 17:06 wham.html

"흥미로운" 점은 wham.html문제 없이 요청할 수 있고 루트가 소유하지만 문서에 따르면 작업은 루트가 아닌 사용자로 실행되어야 한다는 것입니다.

root     30975  0.0  0.6   5104  3140 ?        Ss   17:14   0:00 /usr/sbin/lighttpd2 -c /etc/lighttpd2/angel.conf
www-data 30976  0.0  0.7  52048  3760 ?        Ssl  17:14   0:00 /usr/lib/lighttpd-2.0.0/lighttpd2/lighttpd2-worker --angel -c /etc/lighttpd2/lighttpd.conf

내가 어디서 잘못됐나요?

내 결론은 이것이 실행되지 않거나 적어도 로그에 아무 것도 표시되지 않기 php.conf때문에 관련이 있다는 것입니다 .log.write

그래서 정말 도움이 필요해요!

답변1

일반적으로 말하자면,"회의"한 번에 한 줄씩 순차적으로 실행하는 프로그래밍 언어에 가깝습니다. 일 /index.php에 의존하지 않고 직접 전화를 하려고 노력하는 것을 잊어버렸습니다 index [].

슬프네요. php.conf확인해 보세요.요청된 경로함수가 에서 로의 요청을 다시 쓰기 .php전에 종료됩니다 .index []//index.php

이렇게 하려면 다음을 변경하세요.

include "/etc/lighttpd2/mimetypes.conf";
include "/etc/lighttpd2/vhost.conf";
include "/etc/lighttpd2/php.conf";

#docroot "/srv/http";
index [ "index.php", "index.html", "index.htm", "default.htm", "index.lighttpd.html" ];

도착하다

docroot "/srv/http";
index [ "index.php", "index.html", "index.htm", "default.htm", "index.lighttpd.html" ];

include "/etc/lighttpd2/mimetypes.conf";
include "/etc/lighttpd2/vhost.conf";
include "/etc/lighttpd2/php.conf";

모든 차이를 만들었습니다.
구성/실행 순서가 중요합니다!

이것은 개발 포럼의 원본 메시지입니다.

안녕하세요!

lighttpd2 구성은 기본적으로 프로그래밍 언어로, 순차적으로 수행되는 작업 목록입니다. 이러한 작업 중 소수만이 실제로 요청 컨텍스트에 설정된 옵션입니다.

content 실행 시 물리적 경로가 ".php"로 끝나지 않으면 php.confphp는 실행되지 않지만 기본 구성 끝에서만 index.php를 검색할 수 있습니다. (실제로 "/index.php"를 요청하는 것이 아니라 "/"에 대한 요청입니다.) 따라서:

  • vhost.conf는 모든 경우에 문서 루트를 설정해야 하며 "기본" 문서 루트도 처리하도록 해야 합니다.
  • 원하는 가상 호스트에서 index를 호출하거나 vhost.conf 다음에 호출하여 모든 가상 호스트에 대해 실행하되 "php.conf" 앞에 두십시오.
  • log.write를 사용하여 php.conf의 if 이전에 phys.path의 내용을 디버깅할 수 있습니다. log.write "%{phys.path}";

그런데: 하우투는 올바른 순서를 보여줍니다 :)

나는 보통 (거의) 모든 것을 가상 호스트 구성에 넣습니다(참조: http://doc.lighttpd.net/lighttpd2/mod_vhost.html기본 가상 호스트 및 공통 개념을 처리하기 위해) 실제로 원하는 블록에서만 PHP를 활성화합니다. (php 하우투에서 설명한 것처럼) 일반적인 구성 작업에 대한 별칭을 정의할 수 있습니다.

——유출자

관련 정보