Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从非根位置引用资源时所需的绝对路径_Php_.htaccess - Fatal编程技术网

Php 从非根位置引用资源时所需的绝对路径

Php 从非根位置引用资源时所需的绝对路径,php,.htaccess,Php,.htaccess,我一直在寻找一个问题的答案,我试图解决,但似乎无法找到一个明确的解决办法 我正在使用WAMP服务器。创建新网站时,我会在WAMP根目录中创建一个子目录:C:\WAMP\www例如C:\WAMP\www\somesite.com.au。对于每个站点构建,我总是有一个includes目录:C:\wamp\www\somesite.com.au\includes,其中包含每个站点页面需要的所有全局代码片段,例如包含HTML标题内容的include: <meta charset="utf-8"&g

我一直在寻找一个问题的答案,我试图解决,但似乎无法找到一个明确的解决办法

我正在使用WAMP服务器。创建新网站时,我会在WAMP根目录中创建一个子目录:
C:\WAMP\www
例如
C:\WAMP\www\somesite.com.au
。对于每个站点构建,我总是有一个
includes
目录:
C:\wamp\www\somesite.com.au\includes
,其中包含每个站点页面需要的所有全局代码片段,例如包含HTML标题内容的include:

<meta charset="utf-8">
<meta name="description" content="">
<meta name="keywords" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- CSS -->
<link rel="stylesheet" href="css/sitename.css">
<!--[if lte IE 9]><link rel="stylesheet" href="css/ie.css"><![endif]-->
<!-- All JavaScript at the bottom, except for... -->
<!--[if lt IE 9]><script src="js/libs/html5.js"></script><![endif]-->
<script src="js/libs/respond.js"></script>

问题是,当我从子目录(例如
C:\wamp\www\somesite.com.au\profile\foo.php)中的页面调用include文件时,使用php include:
将找不到包含在其中的资产的任何路径,例如
,因为路径是相对于
include
目录的

有没有一种方法可以使用PHP或.htaccess使我的
includes
目录中的资产的任何相对路径始终解析,无论我从何处调用include文件?我不想在上传到生产环境时修改任何代码,也不想使用HTML
元素

请注意:我是一名前端开发人员,因此我的PHP/.htaccess技能非常基本


干杯

我想你在寻找函数和常数

使用这两个项目,你可以知道你一直在哪里

$currentScriptDir = dirname(__FILE__);

注意:如果您使用的是PHP 5.3>=有一个目录,它直接是脚本所在的目录

您应该通过绝对值链接到页面中的每个资产:

当然,你应该对你要放在页面上的每一张图片都这样做。只需首先定义一个
ABSPATH
常量,并在应用程序中使用它。但是,如果您的图像是在样式表文件中定义的,您不需要将它们定义为绝对的,只需定义我在这里提到的样式表文件的绝对路径即可

ABSPATH:
例如,通常具有用户友好URL的web应用程序应该使用绝对路径来指向其数据。例如,我习惯于创建一个
.htaccess
文件,并将每个调用返回到我的第一个页面index.php,然后我将获得
请求URI
,并将路径分为多个部分,然后决定应该向用户显示哪个部分。这是
ABSPATH
的思想,我在我的核心类的构造方法中定义了它。可以通过工作项目中的每个脚本访问它。我认为这是将数据发送到页面的唯一方法。

这就是我最终让数据正常工作的方法:

  • 在根目录中创建一个
    config.php
    文件,并在每页顶部链接到该文件:

  • 下面是我的
    config.php
    文件的内容:

    <?php
    
    /* Absolute paths to the site root */
    define( 'ABSPATH', dirname(__FILE__) . '/' );
    $path = '/Sitenamehere';
    set_include_path(get_include_path() . PATH_SEPARATOR . $path);
    

    
    
    主要围绕页面性能


    干杯

    你的意思是“css和js”文件不包含在你的页面上,即使包含了页眉也是的,就是这样。
    html header.php
    的内容通过得很好,因为无论我在站点中的何处,我都可以控制包含的路径:
    但是在
    html header.php
    是指向资产的链接,例如
    ,如果我不在根目录中,这些资产的路径与包含相关,则不会通过文件因此,我需要我的
    includes
    目录中指向资产的链接是绝对的,但我不想这样做:
    http://localhost/_Inception/css/sitename.css
    。谢谢,但我想避免使用绝对路径,如:
    localhost/yourfolder/css/style.css
    ,因为这样我就需要在准备上载时更改这些路径到生产服务器。你能详细介绍一下你提到的
    ABSPATH
    常量吗?感谢你对答案的补充,但由于我是一名完全的PHP新手,我正在努力实现你的建议,我明白了这个概念,但只是知道在哪里编写PHP代码以及如何调用它。如果我告诉你,你应该更多地了解PHP,你可能会生我的气,但目的是给我提建议。如果您想快速获得它,我可以告诉您,只需使用
    define()
    方法在系统中第一个脚本的顶部定义一个常量,然后使用
    $\u SERVER[“SERVER\u NAME”]对其进行赋值$_服务器[“SCRIPT_NAME”]
    然后在整个应用程序中使用您定义的常量。在来到这里之前,我一直在尽最大努力自己找到这个解决方案,就像我一直做的那样,我宁愿自己解决这个问题,相信我这是最后的办法。看起来Stackoverflow上有很多关于这个话题的报道。我希望我能像编写HTML、CSS和jQuery那样编写PHP代码,但我不能,因为我的技能在于前端web开发,而不是后端开发。我以为这是一个寻求解决方案的地方,不仅仅是建议,也许我错了?不管怎样,谢谢你的帮助。您能否提供一个示例,说明我如何将
    dirname
    函数和
    \uuuu文件\uuuu
    常量集成到我的站点中?很抱歉,我对PHP的理解不是很透彻。我不知道为什么链接到资产的代码块从来没有正确通过?重试:
    
    
    <?php include (ABSPATH . "/includes/global/html-element.php"); ?>
    
    <?php include "includes/global/html-element.php" ?>