此代码用于检查文件是否存在,始终返回false;
<?php
if (isset($_GET['p'])) {
$page = $_GET['p'];
}
else {
$page = "home";
}
$JKSP = '/Pages/JKS-' . $page . '.php';
if (!file_exists($JKSP)) {
$JKSP = '/Pages/JKS-404.php';
}
?>
没有if(!file_ex .. section。
,它可以正常工作如何让这段代码生效?
此代码的目录是 /功能/ JksCreations / 页面的目录是 / featured / JksCreations / Pages / JKS- PAGE .php
答案 0 :(得分:0)
我不确定你到底想要完成什么,但是file_exists()
通常检查运行web服务器的机器的根文件系统中的绝对路径,而你似乎试图检查相对于webserver的根直接路径的路径(这是根文件系统的子目录)。
您可以使用预定义变量$_SERVER['DOCUMENT_ROOT']
在PHP中访问此子目录。
类似
if (!file_exists($_SERVER['DOCUMENT_ROOT'] . "/featured/JksCreations" . $JKSP)) {
$JKSP = '/Pages/JKS-404.php';
}
可能适用于您尝试执行的操作,但由于缺少权限,它可能仍会失败。
另外,请注意您对结果的处理方式,尤其是在不受信任的环境中。您应该检查参数p
是否只包含文件名的有效字符(尤其是没有点和斜线)。
答案 1 :(得分:0)
所以你做的是用绝对路径检查,但是你想检查一个相对路径,所以你必须在你的第一个斜线前加一个点从当前路径开始相对于此:
$JKSP = './Pages/JKS-' . $page . '.php';
//^ See here