Maison  >  Article  >  développement back-end  >  À propos de la configuration nginx du déploiement PHP

À propos de la configuration nginx du déploiement PHP

不言
不言original
2018-04-27 11:26:492742parcourir

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

La première question :
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
Voici 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 reasons
Le 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。

相关推荐:

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

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn