代码之家  ›  专栏  ›  技术社区  ›  treyBake user1850175

如何在IIS服务器上获取工作文档的根值?

  •  0
  • treyBake user1850175  · 技术社区  · 7 年前

    我在Linux环境下工作,所以一切都像我期望的那样工作,但是到了IIS服务器,一切都崩溃了。我会让每个人都知道为什么IIS和Windows很糟糕,并着手解决这个问题。

    使用 $_SERVER['DOCUMENT_ROOT'] 在myenv上,输出如下值:

    这对包含文件很好,例如。

    require_once $_SERVER['DOCUMENT_ROOT']. '/app/connect.php';
    

    但是,在IIS上,此错误会显示以下消息:

    这让我在代码前面加了这样的前缀:

    echo '<pre>'. print_r($_SERVER['DOCUMENT_ROOT'], 1) .'</pre>';
    

    输出如下:

    100%与现场无关。

    是否应该使用IIS特定的变量来包含脚本?当包含一点都不理想的文件时,它似乎对我的所有代码产生了巨大的连锁反应。在一个梦幻世界里,我的代码不会用一根10英尺长的杆子碰到IIS,但不幸的是它必须在上面运行。

    如何在代码中设置站点的根目录?

    1 回复  |  直到 7 年前
        1
  •  0
  •   treyBake user1850175    7 年前

    不幸的是,IIS服务器不在我的控制范围内,所以我不能真正寻找篡改服务器设置的解决方案。不过,我还是设法找到了解决办法:

    echo '<pre>'. print_r(exec('CHDIR'), 1) .'</pre>';
    

    这给了我一个如下的值:

    C:\www\mysite网站

    $_SERVER['DOCUMENT_ROOT'] .

    我创建了一个条件来区分服务器操作系统,并基于该值设置一个新变量:

    if (strpos(PHP_OS, 'Linux') > -1) {
        $root = $_SERVER['DOCUMENT_ROOT'];
        $feRoot = '/';
    } else {
        $root = 'C:\\www\\mysite';
        $feRoot = 'http://mysite';
    }
    

    $DS = DIRECTORY_SEPRARTOR

    require_once $root. $DS .'app'. $DS .'connect.php';
    

    把我的前端资产称为:

    <link rel="stylesheet" href="<?php echo $feRoot; ?>/css/file.css" />
    

    DOCUMENT_ROOT

    推荐文章