Назад | Перейти на главную страницу

LighTTPD и PHP не работают вне папки LightTPD

Мне нужно настроить простой веб-сервер с PHP на Windows XP что несколько разных людей будут использовать для локального тестирования.

Я использую LightTPD 1.4.30-4-IPv6-Win32-SSL и PHP 5.2.

Пока что я создал такую ​​структуру папок:

tools/
   LightTPD/
       htdocs/
   PHP/

Я настроил PHP как CGI, а корень документа как server_root + "/htdocs". Работает нормально (ну, медленно, но пока не хочу возиться с FastCGI :)).

Моя проблема заключается в том, что я пытаюсь разместить htdocs вне папки LightTPD, например:

htdocs/
tools/
    LightTPD/
    PHP/

Я обновляю корень документа до server_root + "/../../htdocs" и пока статические HTML-страницы работают нормально, PHP-страницы перестают работать (они возвращают сообщение «Входной файл не указан»). Я буквально просто меняю корень документа, я ничего не менял ни в php.ini, ни где-либо еще. Также обратите внимание, что я оставил все doc_root, user_dir и cgi.force_redirect значения по умолчанию в php.ini, и он работает, когда htdocs находится внутри LightTPD, но не когда я перемещаю его за пределы.

Любая идея, почему это ломается?

Вот мой lightTPD.conf:

server.modules              = (
                            "mod_access",
                            "mod_accesslog",
                           "mod_alias",
                           "mod_cgi",
                            "mod_status",
                           )


include "variables.conf"
include "mimetype.conf"

# THIS WORKS
server.document-root        = server_root + "/htdocs"
# THIS DOESN'T
#server.document-root        = server_root + "/../../htdocs"

server.upload-dirs          = ( temp_dir )

index-file.names            = ( "index.php", "index.pl", "index.cgi", "index.cml",
                            "index.html", "index.htm", "default.htm" )

server.event-handler        = "libev"

url.access-deny             = ( "~", ".inc" )

$HTTP["url"] =~ "\.pdf$" {
    server.range-requests = "disable"
}

static-file.exclude-extensions = ( ".php", ".pl", ".cgi" )
server.errorlog = server_root + "/logs/error.log"

######### Options that are good to be but not neccesary to be changed #######

dir-listing.activate        = "enable"

#### CGI module
cgi.assign                 = ( ".php" => server_root + "/../PHP/php-cgi.exe" )

status.status-url           = "/server-status"
status.config-url           = "/server-config"

Я не могу объяснить почему, но похоже, что Лайти не любит родителей .. обозначение. Я только что протестировал это, и если вы укажете полный путь (не беспокойтесь об использовании server_root в вашем конфиге он будет работать.