我对 php 中的正斜杠如何工作感到困惑。它返回网络根吗?或者电脑文件根目录?还是别的什么?
我尝试了几件事,例如,我在ubuntu服务器中的文件结构是这样的:
/var/www/html/domainname.com/.
--/config/.
--/core.php
--/images/.
--/includes/.
--/footer.php
--/header.php
--/navigation.php
--/index.php
这是工作(所有这些都包含在 index.php
中):
<img src="/images/logo.png" /> # in header.php
<a href="/">Home</a> # in navigation.php
<a href="/test/test.php">test</a> # in index.php itself
这不起作用:
<?php require_once('/config/core.php'); ?>
<?php include_once('/includes/header.php');?>
<?php include_once('/includes/navigation.php');?>
<?php include_once('/includes/footer.php');?>
为什么最后四个例子不起作用? “/”字符应该返回 domainname.com
对吗?或者它返回“/var/www/html/”?
我的目标是将所有需要包含的文件放入 includes
目录中。因此,即使 .php
文件存储在子目录中,每个 .php
文件都可以相对访问它们。
最佳答案
现在我明白了。正斜杠 /
在 .php
和 .html
文档中的工作方式不同。
在.php
文件中,/
表示计算机的根文件夹,在unix和C:
中为/
在 Windows 中,就像 Forien 在评论中所说的那样。但是,在 .html
文件中,/
表示网站的根文件夹或在我的情况下 /var/www/html/domainname.com/
。这就是为什么我对 lmho 感到困惑。
所以,这段代码:
<a href="/">Home</a>
<img src="/images/logo.png" />
将在/var/www/html/domainname.com/
中查找,即使它是写在.php
文件中的。因为 .php
文件将其作为 .html
文件发送到浏览器。这同样适用于:
<?php echo '<a href="/">Home</a>'; ?>
上面的这个仍然在 /var/www/html/domainname.com/
中查找,因为 .php
文件将其回显为 .html
文件到网络浏览器。
但是,这会有所不同:
<?php require_once '/includes'; ?>
它将在 unix 中的 /
或 windows 中的 C:
中查找。因为 .php
文件在服务器计算机上工作。这就是为什么最后一个不起作用。服务器根目录中没有 /includes
目录。因此,为了使其正常工作,我必须使用它:
<?php require_once $_SERVER['DOCUMENT_ROOT'].'/includes'; ?>
如果我是正确的话,这就是我的结论。
关于php - 正斜杠 "/"在 php 中实际上是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28674696/