2 回答

TA贡献2037条经验 获得超6个赞
如果你想做一个包含并且已经有了绝对路径,我建议使用它并且不关心相对路径。试图找出本地文件包含的相对路径只会增加更多步骤和过程失败的可能性。或者有什么理由需要我缺少的相对路径?
如果您不知道完整的绝对路径,但知道项目基文件夹的相对路径,请保存项目基文件夹的绝对路径一次,然后将相对路径连接到您的文件。
我还建议不要将您的包含放在公共 HTML 文件夹中。出于安全原因,您希望它们驻留在无法通过 HTTP 访问的文件夹中,以防止在 Web 服务器配置错误的情况下可能暴露源代码或 CSRF。
/home/usr1/includes/common.php
这样的文件将只访问本地包含或其他文件操作,因为你的网络服务器不会成为这样的文件
http://example.com/../includes/common.php

TA贡献2051条经验 获得超10个赞
实际上,您不需要像这样获取 abs 路径
/home/usr1/public_html/includes/common.php
首先,您需要将域的所有请求发送到一个文件(例如名称 controller.php),并且该文件位于您的根方向:
/home/usr1/public_html/controller.php
将请求发送到一个文件:
1 对于 Apache(在根目录.htacces 中):
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ controller.php?rout=$1 [QSA,L]
2 对于 nginx(在这是我的服务器块:** nginx.conf ** 或sites-available/example.com.conf 中):
server {
.
.
// Here your
.
.
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /controller.php?rout=$1 break;
}
}
}
在那个controller.php 中需要之后创建 home url(root 与您的域):
$link = "http" . ( isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "s" : null ) . "://" . $_SERVER['HTTP_HOST'];
//$link - link is your domain
// $link == http://example.com/
在您的controller.php之后,您的域之后有一个所有请求
// if request == http://example.com/blabla
echo $_GET['rout']; // '/blabla'
// if request == http://example.com/blabla/dabladabla
echo $_GET['rout']; // '/blabla/dabladabla'
后取决于你的$_GET['rout']; 您可以控制哪个文件可以包含您的示例(controller.php):
include "includes/common.php";
- 2 回答
- 0 关注
- 145 浏览
添加回答
举报