Hallo,
ich habe auf einem Server in der nginx Konfigurationsdatei eines Virtuellen Web Servers unter anderem die folgende Konfiguration fürs PHP enthalten:
1 2 3 4 5 6 7 8 9 10 11 12 | location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass php-handler; fastcgi_connect_timeout 60; fastcgi_index index.php; fastcgi_param PHP_VALUE "open_basedir=/home/user/webseite:/tmp/"; fastcgi_param PHP_VALUE "max_execution_time = 3600"; } |
Die Angabe von open_basedir scheint aber leider nicht zu greifen; In der /etc/php/7.2/fpm/php.ini habe ich nämlich unter anderem folgendes stehen:
1 | open_basedir = /tmp/ |
Und wenn ich nun auf der Webseite in /home/user/webseite eine PHP Datei ausführen lassen möchte, erhalte ich im Browser die Meldung
No input file specified
und im Log
2018/07/06 23:56:13 [error] 16120#16120: *3 FastCGI sent in stderr: "PHP message: PHP Warning: Unknown: open_basedir restriction in effect. File(/home/user/webseite/index.php) is not within the allowed path(s): (/tmp/) in Unknown on line 0 PHP message: PHP Warning: Unknown: failed to open stream: Operation not permitted in Unknown on line 0 Unable to open primary script: /home/user/webseite/index.php (Operation not permitted)" while reading response header from upstream, client: x.x.x.x, server: meine.domain.com, request: "GET / HTTP/2.0", upstream: "fastcgi://unix:/run/php/php7.2-fpm.sock:", host: "www.meine.domain.com"
Trage ich den Pfad dagegen direkt in die php.ini ein, wird das php Skript verarbeitet.
Kann mir jemand sagen, warum das mit fastcgi_param PHP_VALUE so nicht funktioniert und wie ich es besser machen müsste?