更新 1: 要清楚地了解正在发生的事情,您可以 download a snippet of the script from here.
我正在一个新网站上工作,该网站具有相同的 header , footer在所有 PHP 页面中。
在 header 中,我引用了网站中的其他常见文件,例如 .css , .js , functions , classes , db connection , 等等
例如,default.css在/common/stylesheets/
我的 header.php 和 footer.php 在 /common/html/ 中文件夹
所以我的 header.php 文件是这样的
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>The Header</title>
<link rel="stylesheet" href="common/stylesheets/default.css">
</head>
<body>
在我的网站index.php我包括标题 <?php include('common/html/header.php'); ?>这工作正常......但是当我在其他目录或子目录中的其他 php 页面中包含标题时出现问题,例如/pages/admin/dashboard.php ,一切都搞砸了,该页面不再链接到 default.css文件。
因此,我正在寻找的是一种方法或逻辑,无论其位置如何,我都可以在每个 PHP 页面中引用这些常用文件和文件夹;例如站点根目录、站点根目录或子目录...等...
这是我网站根目录的图片
非常感谢您的帮助...
附言我尝试使用一些超全局变量,例如 $_SERVER['']在 config.inc.php文件来定义路径,然后我将该文件包含在 header.php 中.但是无论 PHP 页面在哪里,我都无法弄清楚哪一个会动态地继续引用那些公共(public)文件夹和文件。
更新 1: 要清楚地了解正在发生的事情,您可以 download a snippet of the script from here.
最佳答案
使用完全限定或绝对 URL 来引用您的 Assets 通常是个好主意:
<link rel="stylesheet" href="http://www.sitenamecom/some/path/to/common/stylesheets/default.css">
由于在许多地方您需要正确的 URL 基础来访问不同的文件,您可以定义一个具有 Web 根目录的常量:
define('WEB_ROOT', 'http://www.sitename.com');
然后你可以定义其他常量来访问系统的不同部分:
define('WEB_ASSETS', WEB_ROOT . '/common');
因此对于 header.php 中的样式表链接,它将是:
<link rel="stylesheet" href="<?php echo WEB_ASSETS; ?>/stylesheets/default.css">
include 文件的原理是相同的,只是在这种情况下您不使用 URL,而是使用文件系统的路径。没有真正动态 的方法来解决这个问题,这一切都归结为绝对路径。
这里的问题是您本地开发环境中的树结构可能(而且肯定不会)与您的服务器相匹配。因此,在位于应用程序根目录的配置文件中,您可以定义:
define('APP_ROOT', dirname(__FILE__));
然后让我们以admin/index.php文件为例:
include '../../../config.inc.php';
include APP_ROOT . '/sitename/common/html/header.php';
这里棘手的部分是包括配置。因为,除非您这样做,否则 APP_ROOT 将不可用,因此需要相对路径才能到达它,并且不可能逃脱这一路径;除非你可以完全相信首选的绝对形式:
include '/some/path/to/config.inc.php';
如前所述,如果应用程序在不同的环境中进行测试,那么使用前导斜杠将是一个问题,因为 some/path/to 很少会始终相同。
关于php - 动态引用不同目录和子目录中所有 PHP 页面的页眉和页脚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26152376/
我正在使用active_admin,我在Rails3应用程序的应用程序中有一个目录管理,其中包含模型和页面的声明。时不时地我也有一个类,当那个类有一个常量时,就像这样:classFooBAR="bar"end然后,我在每个必须在我的Rails应用程序中重新加载一些代码的请求中收到此警告:/Users/pupeno/helloworld/app/admin/billing.rb:12:warning:alreadyinitializedconstantBAR知道发生了什么以及如何避免这些警告吗? 最佳答案 在纯Ruby中:classA
我想让一个yaml对象引用另一个,如下所示:intro:"Hello,dearuser."registration:$introThanksforregistering!new_message:$introYouhaveanewmessage!上面的语法只是它如何工作的一个例子(这也是它在thiscpanmodule中的工作方式。)我正在使用标准的rubyyaml解析器。这可能吗? 最佳答案 一些yaml对象确实引用了其他对象:irb>require'yaml'#=>trueirb>str="hello"#=>"hello"ir
是否可以在应用程序中包含的gem代码中知道应用程序的Rails文件系统根目录?这是gem来源的示例:moduleMyGemdefself.included(base)putsRails.root#returnnilendendActionController::Base.send:include,MyGem谢谢,抱歉我的英语不好 最佳答案 我发现解决类似问题的解决方案是使用railtie初始化程序包含我的模块。所以,在你的/lib/mygem/railtie.rbmoduleMyGemclassRailtie使用此代码,您的模块将在
我基本上来自Java背景并且努力理解Ruby中的模运算。(5%3)(-5%3)(5%-3)(-5%-3)Java中的上述操作产生,2个-22个-2但在Ruby中,相同的表达式会产生21个-1-2.Ruby在逻辑上有多擅长这个?模块操作在Ruby中是如何实现的?如果将同一个操作定义为一个web服务,两个服务如何匹配逻辑。 最佳答案 在Java中,模运算的结果与被除数的符号相同。在Ruby中,它与除数的符号相同。remainder()在Ruby中与被除数的符号相同。您可能还想引用modulooperation.
在我让另一个人重做我的前端UI之前,我的Rails应用程序运行平稳。我已经尝试解决此错误3天了。这是错误:Nosuchfileordirectory-identifyExtractedsource(aroundline#59):575859606162@post=Post.find(params[:id])authorize@postif@post.update_attributes(post_params)flash[:notice]="Postwasupdated."redirect_to[@topic,@post]else{"utf8"=>"✓","_method"=>"patc
RSpec似乎按顺序匹配方法接收的消息。我不确定如何使以下代码工作:allow(a).toreceive(:f)expect(a).toreceive(:f).with(2)a.f(1)a.f(2)a.f(3)我问的原因是a.f的一些调用是由我的代码的上层控制的,所以我不能对这些方法调用添加期望。 最佳答案 RSpecspy是测试这种情况的一种方式。要监视一个方法,用allowstub,除了方法名称之外没有任何约束,调用该方法,然后expect确切的方法调用。例如:allow(a).toreceive(:f)a.f(2)a.f(1)
有没有办法在Ruby中动态创建数组?例如,假设我想遍历用户输入的书籍数组:books=gets.chomp用户输入:"TheGreatGatsby,CrimeandPunishment,Dracula,Fahrenheit451,PrideandPrejudice,SenseandSensibility,Slaughterhouse-Five,TheAdventuresofHuckleberryFinn"我把它变成一个数组:books_array=books.split(",")现在,对于用户输入的每一本书,我想用Ruby创建一个数组。伪代码来做到这一点:x=0books_array.
我想在IRB中浏览文件系统并让提示更改以反射(reflect)当前工作目录,但我不知道如何在每个命令后进行提示更新。最终,我想在日常工作中更多地使用IRB,让bash溜走。我在我的.irbrc中试过这个:require'fileutils'includeFileUtilsIRB.conf[:PROMPT][:CUSTOM]={:PROMPT_N=>"\e[1m:\e[m",:PROMPT_I=>"\e[1m#{pwd}>\e[m",:PROMPT_S=>"FOO",:PROMPT_C=>"\e[1m#{pwd}>\e[m",:RETURN=>""}IRB.conf[:PROMPT_MO
我正在尝试以一种更类似于普通RubyGem结构的方式构建我的Sinatra应用程序。我有以下文件树:.├──app.rb├──config.ru├──Gemfile├──Gemfile.lock├──helpers│ ├──dbconfig.rb│ ├──functions.rb│ └──init.rb├──hidden│ └──Rakefile├──lib│ ├──admin.rb│ ├──api.rb│ ├──indexer.rb│ ├──init.rb│ └──magnet.rb├──models│ ├──init.rb│ ├──invite.rb│ ├─
A/ctohttp://wiki.nginx.org/CoreModule#usermaster进程曾经以root用户运行,是否可以以不同的用户运行nginxmaster进程? 最佳答案 只需以非root身份运行init脚本(即/etc/init.d/nginxstart),就可以用不同的用户运行nginxmaster进程。如果这真的是你想要做的,你将需要确保日志和pid目录(通常是/var/log/nginx&/var/run/nginx.pid)对该用户是可写的,并且您所有的listen调用都是针对大于1024的端口(因为绑定(