Maison >développement back-end >tutoriel php >À propos de la configuration nginx du déploiement PHP
Cet article présente principalement la configuration nginx du déploiement think PHP, qui a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer
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 17Voici le message d'erreur affiché après avoir activé l'invite d'erreur php (si l'invite n'est pas activée, le navigateur n'affichera qu'une erreur 500, ce qui n'est pas facile à dépanner.) Solution : apparaît Cette erreur est principalement contrôlée par le paramètre open_basedir dans fastcgi.conf Dans mon fichier de configuration, la valeur par défaut de ce paramètre est la suivante :
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";La fonction du. Le paramètre open_basedir consiste à limiter les fichiers que PHP peut ouvrir dans une arborescence de répertoires spécifique, le $document_root par défaut est le répertoire /home/wwwroot/default configuré dans nginx.conf, et le répertoire de mon projet se trouve sous /mnt/wwwroot/. admincc/public, car le répertoire du projet n'est pas inclus dans open_basedir , donc l'erreur ci-dessus sera signalée, la solution est très simple, ajoutez simplement le répertoire personnel du projet.
fastcgi_param PHP_ADMIN_VALUE "open_basedir=/mnt/wwwroot:$document_root/:/tmp/:/proc/";PS : Une autre solution est de commenter directement ce paramètre. Deuxième question : Message d'erreur :
scandir() has been disabled for security reasonsLe message d'erreur est que la fonction scandir est désactivée pour des raisons de sécurité. Solution : Oui, comme indiqué, cette fonction est désactivée par défaut dans php.ini.
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Évidemment, scandir est désactivé, et la solution est simple, supprimez simplement scandir et redémarrez php-fpm.
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。
相关推荐:
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!