包含本地主机的绝对路径

asg*_*nes 2 php localhost include

全部。

我的问题是关于我在尝试为我的 DOCTYPE 部分添加通用 php 模板时遇到的问题。我的 DOCTYPE 包含(恰当地命名为 doctype.php)位于 /template 目录中,并且还包含指向我希望所有页面都可以访问的 CSS 和 JS 文件的调用。

所以当我尝试写入这些文件(CSS 和 JS 文件)的绝对路径时遇到了问题。目前,我正在尝试:

<script type="text/javascript" src="<?php echo $_SERVER['DOCUMENT_ROOT'] . '/file/extension/to/javascript/file.js'; ?>"></script>
Run Code Online (Sandbox Code Playgroud)

<link rel="stylesheet" type="text/css" href="<?php echo $_SERVER['DOCUMENT_ROOT'] . 'file/extension/to/css/file.css'; ?>"
Run Code Online (Sandbox Code Playgroud)

我正在本地主机上通过 WAMP 运行该应用程序。看一看源代码,似乎链接指向适当的文件 (c:/wamp/www/examplesite/path/to/file/file.ext),一切都应该没问题。但它不是...

JavaScript 不可访问且样式表不起作用。我不知所措。

我也试过: - 在不使用 PHP 的情况下编写绝对路径 - 创建 PHP 变量来保存文档根目录,然后连接适当的目录路径以访问文件。

有什么建议?当我将目录结构上传到我的在线服务器与我当前的本地主机时,这将如何改变?

Jus*_*afe 5

你可能想试试 $_SERVER['HTTP_REFERER'] 代替。它为您提供了您正在寻找的路径。

在我使用 WAMP 的本地机器上,我过去常常<?php print_r($_SERVER); ?>查看它给出的值。

此外,片段中可能有一些拼写错误。例如,您在给出的第一个示例中不需要前导 /。

例如:

<script type="text/javascript" src="<?php echo $_SERVER['HTTP_REFERER'] . 'file/extension/to/javascript/file.js'; ?>"></script>
<link rel="stylesheet" type="text/css" href="<?php echo $_SERVER['HTTP_REFERER'] . 'file/extension/to/css/file.css'; ?>"></link>
Run Code Online (Sandbox Code Playgroud)

或者由于在某些情况下 HTTP_REFERER 不可信,您可能需要创建一个函数来构建绝对路径的基本部分。

<?php
function getAddress() {
    $protocol = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https' : 'http';
    $filenamepattern = '/'.basename(__FILE__).'/';
    return $protocol.'://'.$_SERVER['HTTP_HOST'].preg_replace($filenamepattern,"",$_SERVER['REQUEST_URI']);
 } 
?>
Run Code Online (Sandbox Code Playgroud)

然后像这样调用它:

<script type="text/javascript" src="<?php echo getAddress() . 'file/extension/to/javascript/file.js'; ?>"></script>
<link rel="stylesheet" type="text/css" href="<?php echo getAddress() . 'file/extension/to/css/file.css'; ?>"></link>
Run Code Online (Sandbox Code Playgroud)