is_dir只是无法正常工作

时间:2014-02-04 20:41:33

标签: php mysql mysqli install

我正在尝试开发一个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 /文件夹中。难道我做错了什么? ' - '

3 个答案:

答案 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”应该是当前工作目录的父目录中的子目录。