我正在尝试开发一个PHP MySQL网站,其中is_dir函数需要在主文件夹中存在“install”文件夹,然后转到安装文件夹(如果为true)或继续网站(如果假)。
if(is_dir("../install/"))
{
header("Location: ../install/");
}
else
{
require_once("config.php");
$db=new mysqli($db_host,$db_user,$db_pass,$db_);
$db->query("SET NAMES utf8");
global $db;
}
但是is_dir只是没有检测到安装文件夹。此文件(名为core.php)位于/ scripts /文件夹中。难道我做错了什么? ' - '
答案 0 :(得分:0)
is_dir documentation:
If you have enabled safe mode, or open_basedir further restrictions may apply.
您可以检查这些限制是否在您的服务器中生效。
答案 1 :(得分:0)
..
指的是父目录。例如如果此特定脚本以/foo/bar/script.php
运行,则表示您正在测试/foo/install/
。
另请注意,基于标头的Location
重定向是网址。它们并不总是对应于服务器中的实际文件系统。如果您的脚本的网址是example.com/script.php
,那么您的is_dir测试将查找网站文档根目录下方的目录,您无法重定向到该目录。
/home/sites/example.com/html/script.php -> example.com/script.php
/home/sites/example.com/html/../install -> example.com/../install/
^^^^^^^--these two collapse
^^--can't go "up" from doc root
/home/sites/example.com/install -> example.com/install
现在路径映射不再起作用,因为您的URL路径被PHP中使用的文件系统路径中的一个目录“关闭”。
答案 2 :(得分:0)
您应该检查该进程的当前工作目录。打印出来。
echo getcwd();
“install”应该是当前工作目录的父目录中的子目录。