lighttpd + php5 = 403 forbidden

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05 20:45
Mijn pogingen op lighttpd and php5 via fastcgi me elkaar te laten praten halen tot nu toe niets uit. Ik krijg op een 403 fout als ik een php script aanroep via de browser. Lighttpd laat html files wel zien.
Ik heb zowel php5-cgi als php5-fpm geprobeerd.

Mijn lighttpd configuratie:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# lighttpd.conf
server.modules = (
    "mod_accesslog"
)

server.document-root = "/home/www/" 

server.port = 80
server.pid-file             = "/var/run/lighttpd.pid"

server.username = "www-data" 
server.groupname = "www-data" 

mimetype.assign = (
  ".html" => "text/html", 
  ".txt" => "text/plain",
  ".jpg" => "image/jpeg",
  ".png" => "image/png" 
)

static-file.exclude-extensions = ( ".pl", ".fcgi", ".php", ".rb", "~", ".inc" )
index-file.names = ("index.htm", "index.html", "index.lighttpd.html" )

server.errorlog         = "/var/log/lighttpd/error.log"
accesslog.filename = "/var/log/lighttpd/access.log"

# 10-fastcgi.conf:
server.modules += ( "mod_fastcgi" )
fastcgi.debug = 100

# 15-fastcgi-php.conf:
index-file.names += ( "index.php" ) 

fastcgi.server = (
    ".php" =>
  (( 
    "socket" => "/run/php5-fpm.sock",
    #"socket" => "/run/php5-cgi.sock",
    #"bin-path" => "/usr/bin/php5-cgi",
    "broken-scriptfilename" => "enable",
    "check-local" => "disable"
  ))
)


Files in mijn docroot en de sockets:
code:
1
2
3
4
5
6
7
8
9
10
11
 ls -l
total 24
-rw-rw---- 1 www-data www-data    37 Jan 22 00:12 hello.html
-rw-rw---- 1 www-data www-data    32 Jan 21 14:16 hello.php
-rw-rw---- 1 www-data www-data 10701 Jan 21 00:42 index.html
-rw-rw---- 1 www-data www-data    19 Jan 21 00:31 phpinfo.php

$ ls -l /run/*.sock /run/php*
-rw-r--r-- 1 root     root     4 Jan 21 14:23 /run/php5-fpm.pid
srw-rw---- 1 www-data www-data 0 Jan 21 14:23 /run/php5-fpm.sock
srw-rw-rw- 1 root     root     0 Jan 21 13:32 /run/rpcbind.sock


Wat in ieder geval al opvalt is dat er geen php5-cgi.sock is. De fastcgi binary (gecheckt, /usr/bin/php5-cgi) word blijkbaar niet aangeroepen. Maar dat verklaart niet waarom het met php5-fpm ook niet werkt en die draait wel. Ik denk dat er dus nog een onderliggend probleem is. Alle relevante files zijn 660 www-data:www-data dus zouden permissies niet het probleem moeten zijn.

Ondanks het debuglevel van 100 staat er niets in de error.log, alleen het starten en stoppen van de server. In ben afgegaan op het voorbeeld van ArchLinux.

Na een halve dag proberen ben ik door mijn mogelijkheden heen. Iemand een idee?

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 00:40

Hero of Time

Moderator LNX

There is only one Legend

Onder welke gebruiker worden de PHP scripts uitgevoerd? Want het lijkt erop dat dat niet onder www-data gebeurt. De error logs moeten dat weergeven.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Blokker_1999
  • Registratie: Februari 2003
  • Laatst online: 15:38

Blokker_1999

Full steam ahead

Sowieso raad ik aan om met FPM te werken en dan eens even in de FPM config kijken met welke gebruiker de worker threads gespawned worden.

No keyboard detected. Press F1 to continue.


Acties:
  • 0 Henk 'm!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

Welk distro draai je?

Iemand een Tina2 in de aanbieding?


Acties:
  • 0 Henk 'm!

  • CAPSLOCK2000
  • Registratie: Februari 2003
  • Laatst online: 11-09 21:28

CAPSLOCK2000

zie teletekst pagina 888

Wat in ieder geval al opvalt is dat er geen php5-cgi.sock is.
Op dit moment bestaat de file duidelijk niet en /run is alleen schrijfbaar voor root. Misschien heeft lighttpd niet de juiste rechten op het moment dat het die socket probeert aan te maken.

Laten we één methode kiezen en ons daar in vastbijten. Twee paden tegelijk bewandelen geeft maar verwarring. Zelf zou ik voor php-fpm gaan daar de keuze is aan jou.

This post is warranted for the full amount you paid me for it.


Acties:
  • 0 Henk 'm!

  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05 20:45
Ik heb idd voorkeur voor de fpm oplossing en heb mijn config inmiddels zo aangepast (andere socket, geen bin-path meer). De workprocesses van php5-fpm draaien als gebruiker www-data:
code:
1
2
3
4
lsof /var/run/php5-fpm.sock
php5-fpm  2555             root    9u     unix 0xffff88003ad2f840      0t0      12160 /var/run/php5-fpm.sock
php5-fpm  2556         www-data    0u     unix 0xffff88003ad2f840      0t0      12160 /var/run/php5-fpm.sock
php5-fpm  2557         www-data    0u     unix 0xffff88003ad2f840      0t0      12160 /var/run/php5-fpm.sock

Dat hier /var/run/php5-fpm.sock wordt genoemd en in mijn openingspost /run/php5-fpm.sock is geen probleem: /var/run is een symlink naar /run. (inmiddels verwijst alles direct naar /run)
Ik draai Debian Jessie.
De /run dir is inderdaad root:root 755. De socket wordt (voor zover ik begrijp) door php5-fpm gemaakt en daarvan draait het master process als root (zie boven). De master kan dus prima de sockets maken.

Update:
Voor de zekerheid even gecheckt: de socket wordt idd door php5-fpm aangemaakt. Permissies op /run zijn root:root 755, dus moet lighttpd deze socket gewoon kunnen openen.

[ Voor 8% gewijzigd door Sir Isaac op 23-01-2017 15:10 ]


Acties:
  • 0 Henk 'm!

  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05 20:45
schopje..

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 00:40

Hero of Time

Moderator LNX

There is only one Legend

Hoezo alleen een schopje? Je hebt nog geen informatie uit o.a. de error log gegeven waar ik al aan het begin om vroeg.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05 20:45
In de error log stond helemaal niets (stond al in de openingspost) maar inmiddels heb ik de debug.log-request-handling optie gevonden. Die levert het onderstaande informatie op. Blijkbaar komt lighttpd niet op het idee om PHP te proberen maar ziet hij wel dat hij niet als statische file mag terug sturen.
Vervolgens heb ik php uit de static-file.exclude-extensions gehaald en die in 15-fastcgi-php.conf toegevoegd. Als ik nu een php script aanroep vanuit de browser kan ik het script downloaden. Het lijkt er op dat de file 15-fastcgi-php.conf genegeerd wordt.
Als ik hem expliciet include in 10-fastcgi.conf werkt het nog steeds niet. Beide files hebben links in conf-enabled, en zouden dus geladen moeten worden. Als ik het goed begrijp zou dat voldoende moet zijn om lighttpd ze te laten lezen.

root@virttest:/etc/lighttpd/conf-enabled# lighty-enable-mod fastcgi-php
already enabled


Vreemd dat hij dan toch niet werkt.

De 15-fastcgi-php.conf ziet er nu zo uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
index-file.names += ( "index.php" ) 
static-file.exclude-extensions += ( ".php", "php4", "php5" )

fastcgi.server = (
    ".php" =>
    (( 
        "socket" => "/run/php5-fpm.sock",
    #"socket" => "/run/php5-cgi.sock",
    #"bin-path" => "/usr/bin/php5-cgi",
        "broken-scriptfilename" => "enable",
    "check-local" => "disable"
    ))
)


De error log, met de php extentie nog verboden in de hoofdconfiguratie file, is:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2017-01-25 23:09:31: (response.c.339) -- splitting Request-URI 
2017-01-25 23:09:31: (response.c.340) Request-URI     :  /hello.php 
2017-01-25 23:09:31: (response.c.341) URI-scheme      :  http 
2017-01-25 23:09:31: (response.c.342) URI-authority   :  192.168.100.10 
2017-01-25 23:09:31: (response.c.343) URI-path (raw)  :  /hello.php 
2017-01-25 23:09:31: (response.c.344) URI-path (clean):  /hello.php 
2017-01-25 23:09:31: (response.c.345) URI-query       :   
2017-01-25 23:09:31: (mod_access.c.135) -- mod_access_uri_handler called 
2017-01-25 23:09:31: (response.c.473) -- before doc_root 
2017-01-25 23:09:31: (response.c.474) Doc-Root     : /home/www/ 
2017-01-25 23:09:31: (response.c.475) Rel-Path     : /hello.php 
2017-01-25 23:09:31: (response.c.476) Path         :  
2017-01-25 23:09:31: (response.c.524) -- after doc_root 
2017-01-25 23:09:31: (response.c.525) Doc-Root     : /home/www/ 
2017-01-25 23:09:31: (response.c.526) Rel-Path     : /hello.php 
2017-01-25 23:09:31: (response.c.527) Path         : /home/www/hello.php 
2017-01-25 23:09:31: (response.c.544) -- logical -> physical 
2017-01-25 23:09:31: (response.c.545) Doc-Root     : /home/www/ 
2017-01-25 23:09:31: (response.c.546) Basedir      : /home/www/ 
2017-01-25 23:09:31: (response.c.547) Rel-Path     : /hello.php 
2017-01-25 23:09:31: (response.c.548) Path         : /home/www/hello.php 
2017-01-25 23:09:31: (response.c.565) -- handling physical path 
2017-01-25 23:09:31: (response.c.566) Path         : /home/www/hello.php 
2017-01-25 23:09:31: (response.c.573) -- file found 
2017-01-25 23:09:31: (response.c.574) Path         : /home/www/hello.php 
2017-01-25 23:09:31: (response.c.725) -- handling subrequest 
2017-01-25 23:09:31: (response.c.726) Path         : /home/www/hello.php 
2017-01-25 23:09:31: (mod_access.c.135) -- mod_access_uri_handler called 
2017-01-25 23:09:31: (mod_staticfile.c.400) -- NOT handling file as static file, extension forbidden

[ Voor 12% gewijzigd door Sir Isaac op 25-01-2017 23:43 ]


Acties:
  • 0 Henk 'm!

  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05 20:45
Gevonden! De regel
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
ontbrak in de lighttpd.conf. Nadat ik die heb toegevoegd en eental dubbele opties uit de config file heb verwijderd werkt het.
Pagina: 1