php路径问题,在网上有很多帖子,也有很多解决方式,本文只支出其中的一点问题。
首先,说一说遇到的问题:
在V层的html的form中指定action的路径时,却发现在使用define常量,无法正确指定提交的处理文件。如图:
此处为演示代码,常量定义和文件的目录结构无误(代码不在同一文件中)。
其实,仔细想想,错误是必然的。原因是:
web开发是一种B/S的开发模式。言外之意,它有”前后端“。浏览器是它的前端,我们部署代码的机器是服务器。
而在上述的代码中,ROOT的echo结果是:D:/wamp/www/excour/
错误的原因也就很显然了:因为,form的action="D/wamp/www/excour/Admin/Controller/Login/login.class.php"。
对,它指向了一个本机路径!!!
原因就在于,上面的代码忽略了web开发的B/S属性。php代码在后端被php解析,而HTML代码则是在前端被浏览器被解析!!!
于是,可以在php代码中使用本机路径,但绝对不能在HTML代码中也使用本机路径。
当然,使用远程路径是一个前后端都适用的方式。
然而,include和require在使用远程路径加载时,会有安全警告。这使得我们不得不在前后端,分别使用本机和远程路径。