wuuyun 发表于 2021-3-2 09:37:25

PHPER 们 来讨论下一些框架的public入口


本人是菜鸟级别的,

1,安装LNMP
2,添加vhost 如: www.demo.com
3,选型框架(THINKPHP)

此时默认的防跨目录 是 /home/wwwroot/www.demo.com

跨目录方案:
1,默认不改变,改写入口文件 index.php :也就是将public里的index.php移到上一层(网站根目录),然后调整下框架引用路径.

2,按照这里的设置 https://lnmp.org/faq/lnmp-vhost-add-howto.html#user.ini
LNMP 1.4或更高版本也可以直接使用lnmp安装包 tools/ 目录下的 ./remove_open_basedir_restriction.sh 进行移除,需要输入原网站目录完整路径(注意不是新的网站路径),回车即可。
在Thinkphp、codeigniter、Laravel等框架下,网站目录一般是在public下,但是public下的程序要跨目录调用public上级目录下的文件,因为LNMP默认是不允许跨目录访问的,所以都是必须要将防跨目录访问的设置去掉,有时候这些框架类的程序提示500错误也可能是这个问题引起的。

3, 自定义一个文件夹,将程序主体都移动到里面
比如新建 skdfweb
将 (除了 index.php,uploads) 等不想直接访问到的,都移动到 skdfweb 里,

方案2 和 3 是不是相同的效果(安全上考虑)
哪种回比较好呢,






补充内容 (2021-3-2 09:56):
经测试 还是 方案2 安全点

wuuyun 发表于 2021-3-2 09:41:14

网上找来的 为什么要把入口放public

这个跟服务器环境又关系。无论你用apache还是ngnix的时候,设置root虚拟根目录的时候,如果index.php是public文件夹下面,那么服务器软件只会让外部只能访问到public下面的所有东西,而public外层的所有东西都是不可以在外部访问(这个是linux对apache或者nginx的权限限制问题)。另外有些人喜欢把upload放到public文件下面,其实这个安全性也是不够的,正确的应该是放到项目根目录,然后在public下面创建文件夹的软连接,还有设置upload文件夹不可以执行任何动态语言。

wuuyun 发表于 2021-3-2 09:55:33

方案3,需要编写程序的时候 不能暴露
页: [1]
查看完整版本: PHPER 们 来讨论下一些框架的public入口