Heim  >  Artikel  >  Backend-Entwicklung  >  Informationen zur Nginx-Konfiguration für die PHP-Bereitstellung

Informationen zur Nginx-Konfiguration für die PHP-Bereitstellung

不言
不言Original
2018-04-27 11:26:492691Durchsuche

Dieser Artikel stellt hauptsächlich die Nginx-Konfiguration der Think PHP-Bereitstellung vor, die einen gewissen Referenzwert hat. Jetzt kann ich sie mit allen teilen, die sie brauchen.

Die erste Frage:
Warning: require(): open_basedir restriction in effect. File(/mnt/wwwroot/admincc/thinkphp/start.php) is not within the allowed path(s): (/mnt/wwwroot/admincc/public/:/tmp/:/proc/) in /mnt/wwwroot/admincc/public/index.php on line 17Warning: require(/mnt/wwwroot/admincc/thinkphp/start.php): failed to open stream: Operation not permitted in /mnt/wwwroot/admincc/public/index.php on line 17Fatal error: require(): Failed opening required '/mnt/wwwroot/admincc/public/../thinkphp/start.php' (include_path='.:/usr/local/php/lib/php') in /mnt/wwwroot/admincc/public/index.php on line 17

Dies ist die Fehlermeldung, die nach dem Einschalten der PHP-Fehleraufforderung angezeigt wird (wenn die Aufforderung nicht aktiviert ist, zeigt der Browser nur einen 500-Fehler an, der nicht einfach zu beheben ist.)

Lösung:

Dies geschieht. Der Fehler wird hauptsächlich durch den Parameter open_basedir in fastcgi.conf gesteuert. In meiner Konfigurationsdatei lautet der Standardwert dieses Parameters wie folgt:

fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";

Die Funktion des Parameters open_basedir ist Um die Dateien, die PHP öffnen kann, auf ein bestimmtes Verzeichnis zu beschränken, ist das Standardverzeichnis $document_root das in nginx.conf konfigurierte Verzeichnis /home/wwwroot/default, und das Verzeichnis meines Projekts befindet sich unter /mnt/wwwroot/admincc /public. Da das Projektverzeichnis nicht in open_basedir enthalten ist, ist die Lösung sehr einfach: Fügen Sie einfach das Projekt-Home-Verzeichnis hinzu.

fastcgi_param PHP_ADMIN_VALUE "open_basedir=/mnt/wwwroot:$document_root/:/tmp/:/proc/";

PS: Eine andere Lösung besteht darin, diesen Parameter direkt auskommentieren.

Zweite Frage:

Fehlermeldung:

scandir() has been disabled for security reasons

Die Fehlermeldung lautet, dass die Scandir-Funktion aus Sicherheitsgründen deaktiviert ist.

Lösung:

Ja, wie Sie dazu aufgefordert werden, ist diese Funktion in php.ini standardmäßig deaktiviert.

disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server

Scandir ist offensichtlich deaktiviert und die Lösung ist einfach: Löschen Sie einfach Scandir und starten Sie PHP-FPM neu.

service php-fpm restart
第三个问题:

访问报404错误。

解决办法:

这个的原因在于nginx的配置有问题,在vhost/admincc.conf(站点虚拟主机的配置文件)中添加如下配置即可:

location / {            if (!-e $request_filename) {
                rewrite  ^(.*)$  /index.php?s=/$1  last;                break;
            }
        }

由于ThinkPHP的入口文件是index.php,所以要重写下url。
保存配置,记得重启nginx。

相关推荐:

thinkphp部署到万网云服务器上报连接不上mysql

Das obige ist der detaillierte Inhalt vonInformationen zur Nginx-Konfiguration für die PHP-Bereitstellung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn