猿问

php的web框架怎么实现单入口

我下载了ci,slim,laravel框架,上传到我的ubuntu+nginx+php主机上,但是我发现,随便这三个框架的任意一个目录中放一个test.php文件,输出echo"helloworld",然后这个文件竟然能在浏览器上访问。
那么请问,这些框架不是单入口的吗,只能通过index.php访问,可是为什么这里能以目录+文件名的形式越过index.php进行访问吗,那随便一个文件都能被外部访问了,还有什么安全性和隔离性可言呢。
还有就是怎么隐藏index.php这个文件呢,直接通过域名根目录访问各页面路由。
POPMUISE
浏览 334回答 2
2回答

缥缈止盈

你现在对单一入口的理解有点问题:单一入口指的是你的应用是通过一个入口文件进入的,其实你的单一入口的程序不就是个PHP文件嘛,也没什么特别的,为什么其它程序就不能被访问呢?你可能要说因为它是单一入口(这只是你臆想出来的),Web服务器可不认为只有它可以访问,能限制谁允许被访问,谁不允许被的就只有Web服务器,可以用它来限制只有你要的PHP被访问,其它的不允许。另外:框架的源码应该是放到webRoot之外的,只有需要被访问的程序放在webRoot里,比如你的index.php还有一些静态资源。如何实现限制只有单一入口这一个PHP访问,可以去查对应的框架所对应的Web服务器的写法:比如我是YII2加Nginxserver{server_namexxx.idarex.com;indexindex.php;set$rootdir/var/www/html/idarex/passport/web;root$rootdir;location/{try_files$uri$uri/index.php?$args;}location~\.php${includefastcgi_params;fastcgi_indexindex.php;fastcgi_paramSCRIPT_FILENAME$rootdir/index.php;fastcgi_pass127.0.0.1:9000;}}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答