用于检查文件是否存在的代码总是返回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
所以你用绝对路径检查,但你想用相对路径检查,所以你必须在你的第一个斜杠之前放一个点,使它与你的当前路径相对,比如:
$JKSP = './Pages/JKS-' . $page . '.php';
//^ See here
我真的不确定您最终要完成什么,但file_exists()
通常会检查Web服务器运行所在机器的根文件系统中的绝对路径,而您似乎会尝试检查相对于Web服务器的根目录(根文件系统的子目录)的路径。
您可以使用预定义的变量$_SERVER['DOCUMENT_ROOT']
访问PHP中的此子目录。
所以类似的东西
if (!file_exists($_SERVER['DOCUMENT_ROOT'] . "/featured/JksCreations" . $JKSP)) {
$JKSP = '/Pages/JKS-404.php';
}
可能适用于您尝试执行的操作,但也可能由于缺少权限而失败。
此外,要小心处理结果,尤其是在不受信任的环境中。您应该检查参数p
是否仅由文件名的有效字符组成(尤其是没有句点和斜杠)。