【问题标题】:PHP Path LocationPHP路径位置
【发布时间】:2013-04-02 16:25:33
【问题描述】:

我四处寻找答案,希望我没有错过它或没有重复它,但它就在这里。我有两个文件:

/var/www/index.php

/var/www/include/php/header.php

索引包括header.php 文件。我希望头文件能够向上遍历两个级别,因此我可以包含/include/css/index.css。这就是问题所在,标头也包含在诸如

之类的文件中

/var/www/sub/page.php

所以我不能简单地使用../../,因为 php 文件的位置发生了变化。我尝试使用$_SERVER['PHP_SELF'],但这取决于包含头文件的php文件的位置。我也尝试过dirname(__FILE__),但这给了我/var/www/ 部分,这会导致包含问题。

基本上我想从包含的header.php 文件中获取$_SERVER['PHP_SELF'] 的值,而不是从包含它的php 脚本中获取。我希望该站点是模块化的,因此可以将其发布到任何地方,而不必担心文件位置会混乱。有没有更简单的方法来做到这一点?

【问题讨论】:

  • 您是否将您的CSS 包含为 HTML 包含?或者使用 PHP include 合并到文档中?因为你会采取不同的方法......
  • 作为 HTML 包含。我最初的想法是让这些包含在根文件夹绝对路径之前加上,这样如果这个网站被移动到不同的级别,它就不会受到影响。
  • 检查此答案以从路径stackoverflow.com/a/36101073/3626097获取网址

标签: php css web


【解决方案1】:

根据您的评论,它是 CSS 的包含,您基本上不用担心您的 PHP 文件在哪里,只需从服务器的角度(Web 端)进行:

<link rel="stylesheet" type="text/css" href="/include/css/index.css">

对于您应用的/include/css 文件夹中的文件(网络公开)

更新:

根据您更新的评论,您应该为您的应用(配置)存储一个变量,并调用像 CodeIgniter 那样的函数:

$domain_url= "http://".$_SERVER['HTTP_HOST'];
$domain_url.= tr_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);

function base_url($url){
    return $domain_url + $url;
}

echo base_url("include/css/index.css");

参考:http://ellislab.com/codeigniter/user-guide/helpers/url_helper.html

【讨论】:

  • 问题是我的网站不一定位于网络根目录,因此它可能是 /mywebsite/include/css/index.css 并且我不想将 /mywebsite/ 部分编程到我希望它从头文件查找包含的位置向上两级。
  • 然后你需要像 CodeIgniter 的 base_url() 那样定义根 URL (domain.com/subsite) 并在代码中使用该 fn 作为 CSS 资源的前缀。
  • 感谢您的更新。我想过这样做,我只是想知道是否有一种自动的方法来代替自己输入字符串。
  • 更新了我的答案,但是这有限制,CLI 不起作用等;我已经看到自动化方式的一些问题,有利于测试,但对于 PROD,我会保持静态
【解决方案2】:

认为您需要使用__DIR__ 常量才能从任何文件中相对包含文件。 但更好的是我认为为你的根文件系统路径定义一些常量,比如

define( 'FS_ROOT', 'root path here' );

并且当包含文件时相对于这个常量。此外,它还允许您为每个使用的重要文件夹添加常量,如果要更改路径,您只需更改一些常量值

【讨论】:

  • dir 的问题在于它为您提供了磁盘绝对路径而不是 Web 绝对路径,这在我尝试包含我的 css 时会导致问题。
  • 对于 .CSS 和其他 URL,只需为基本 URL 添加一个常量 + 为更深层次添加相同的常量。不要忘记
  • 基本标签效果惊人,这正是我想要的。现在我只需要 php 的等价物。
猜你喜欢
  • 2013-04-21
  • 2012-10-02
  • 1970-01-01
  • 2015-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-22
  • 1970-01-01
相关资源
最近更新 更多