返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php相对目录打不开如何解决
  • 487
分享到

php相对目录打不开如何解决

2023-07-04 16:07:20 487人浏览 薄情痞子
摘要

这篇文章主要介绍了PHP相对目录打不开如何解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php相对目录打不开如何解决文章都会有所收获,下面我们一起来看看吧。php相对目录打不开的解决办法:1、使用“绝对路径

这篇文章主要介绍了PHP相对目录打不开如何解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php相对目录打不开如何解决文章都会有所收获,下面我们一起来看看吧。

php相对目录打不开的解决办法:1、使用“绝对路径”;2、定义一个通用函数import.php,将其设置为“自动提前引入文件”,并在php.ini中修改内容为“auto_prepend_file = "C:\xampp\htdocs\auto_prepend_file.php"”即可。

PHP中require和include路径问题总结

1 绝对路径、相对路径和未确定路径

相对路径

相对路径指以.开头的路径,例如

./a/a.php (相对当前目录)    ../common.inc.php (相对上级目录),
绝对路径

绝对路径是以 / 开头或者windows下的 C:/ 类似的盘符开头的路径,全路径不用任何参考路径就可以唯一确定文件的最终地址。 例如

/apache/wwwroot/site/a/a.phpc:/wwwroot/site/a/a.php
未确定路径

凡是不以 . 或者 / 开头、也不是windows下 盘符:/ 开头的路径,例如

a/a.php  common.inc.php,

开始以为这也是相对路径,但在php的include/require包含机制中,这种类型的路径跟以 . 开头的相对路径处理是完全不同的。require './a.php' 和 require 'a.php' 是不同的!

下面分析这三种类型包含路径的处理方式:首先记住一个结论:如果包含路径为相对路径或者绝对径,则不会到include_path(php.ini中定义的include_path环境变量,或者在程序中使用set_include_path(...)设置)中去查找该文件。

测试环境说明

注意:下面的讨论和结论基于这样的环境: 假设 A=Http://www.xxx.com/app/test/a.php,再次强调下面的讨论是针对直接访问A的情况。

2. 相对路径:

相对路径需要一个参考目录才能确定文件的最终路径,在包含解析中,不管包含嵌套多少层,这个参考目录是程序执行入口文件所在目录

示例1

A中定义  require './b/b.php';  // 则B=[SITE]/app/test/b/b.phpB中定义  require './c.php';    // 则C=[SITE]/app/test/c.php 不是[SITE]/app/test/b/c.php

示例2

A中定义  require './b/b.php';  // 则B=[SITE]/app/test/b/b.php B中定义  require '../c.php';   // 则C=[SITE]/app/c.php  不是 [SITE]/app/test/c.php

示例3

A中定义  require '../b.php';   //则B=[SITE]/app/b.php B中定义  require '../c.php';   //则C=[SITE]/app/c.php  不是 [SITE]/c.php

示例4:

A中定义  require '../b.php';   // 则B=[SITE]/app/b.php B中定义  require './c/c.php';  / /则C=[SITE]/app/test/c/c.php  不是 [SITE]/app/c/c.php

示例5

A中定义  require '../inc/b.php';  // 则B=[SITE]/app/inc/b.php B中定义  require './c/c.php';     // 则C还是=[SITE]/app/test/c/c.php  不是 [SITE]/app/inc/c/c.php

示例6

A中定义  require '../inc/b.php';  // 则B=[SITE]/app/inc/b.php B中定义  require './c.php';       // 则C=[SITE]/app/test/c.php  不是 [SITE]/app/inc/c.php

3. 绝对路径

绝对路径的比较简单,不容易混淆出错,require|inclue 的就是对应磁盘中的文件。

require '/wwwroot/xxx.com/app/test/b.php';    // linux中require 'c:/wwwroot/xxx.com/app/test/b.php';  // windows中

dirname(__FILE__)计算出来的也是一个绝对路径形式的目录,但是要注意__FILE__是一个Magic constants,不管在什么时候都等于写这条语句的php文件所在的绝对路径,因此dirname(__FILE__)也总是指向写这条语句的php文件所在的绝对路径,跟这个文件是否被其他文件包含使用没有任何关系。

示例1

A中定义  require '../b.php';                  // 则B=[SITE]/app/b.phpB中定义  require dirname(__FILE__).'/c.php';  // 则B=[SITE]/app/c.php

示例2

A中定义  require '../inc/b.php';              // 则B=[SITE]/app/inc/b.phpB中定义  require dirname(__FILE__).'/c.php';  // 则B=[SITE]/app/inc/c.php 始终跟B在同一个目录

结论:不管B是被A包含使用,还是直接被访问

B如果 require dirname(__FILE__).'/c.php';    // 则始终引用到跟B在同一个目录中的 c.php文件; B如果 require dirname(__FILE__).'/../c.php'; // 则始终引用到B文件所在目录的父目录中的 c.php文件; B如果 require dirname(__FILE__).'/c/c.php';  // 则始终引用到B文件所在目录的c子目录中的 c.php文件;

4. 未确定路径

首先在逐一用include_path中定义的包含目录来拼接[未确定路径],找到存在的文件则包含成功退出,如果没有找到,则用执行require语句的php文件所在目录来拼接[未确定路径]组成的全路径去查找该文件,如果文件存在则包含成功退出,否则表示包含文件不存在,出错。 未确定路径比较容易搞混不建议使用。

5. 解决方案

由于“相对路径”中的“参照目录”是执行入口文件所在目录,“未确定”路径也比较容易混淆,因此最好的解决方法是使用“绝对路径”; 例如b.php的内容如下,无论在哪里require b.php都是以b.php的路径为参照来require c.php的

$dir = dirname(__FILE__);require($dir . '../c.php');

或者定义一个通用函数 import.php,将其设置为“自动提前引入文件”,在php.ini做如下配置

更改配置项(必须)auto_prepend_file = "C:\xampp\htdocs\auto_prepend_file.php"更改配置项(可选)allow_url_include = On

import.php内容如下

function import($path) {        $old_dir = getcwd();        // 保存原“参照目录”    chdir(dirname(__FILE__));    // 将“参照目录”更改为当前脚本的绝对路径    require_once($path);    chdir($old_dir);            // 改回原“参照目录”}

这样就可以使用import()函数来require文件了,无论包含多少级“参照目录”都是当前文件。

关于“php相对目录打不开如何解决”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“php相对目录打不开如何解决”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网PHP编程频道。

--结束END--

本文标题: php相对目录打不开如何解决

本文链接: https://lsjlt.com/news/346540.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • php相对目录打不开如何解决
    这篇文章主要介绍了php相对目录打不开如何解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php相对目录打不开如何解决文章都会有所收获,下面我们一起来看看吧。php相对目录打不开的解决办法:1、使用“绝对路径...
    99+
    2023-07-04
  • php 相对目录打不开怎么办
    php相对目录打不开的解决办法:1、使用“绝对路径”;2、定义一个通用函数import.php,将其设置为“自动提前引入文件”,并在php.ini中修改内容为“auto_prepend_file = "C:\xampp\htdoc...
    99+
    2023-05-14
    相对目录 php
  • win10录屏打不开如何解决
    本文小编为大家详细介绍“win10录屏打不开如何解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“win10录屏打不开如何解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。进入设置界面,点击游戏。 切换到游戏...
    99+
    2023-07-02
  • 电脑打不开php文件如何解决
    本篇内容主要讲解“电脑打不开php文件如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“电脑打不开php文件如何解决”吧!一、为什么电脑打不开PHP文件?未安装PHP环境如果你想在电脑上运行...
    99+
    2023-07-05
  • onedrive打不开如何解决
    本篇内容主要讲解“onedrive打不开如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“onedrive打不开如何解决”吧!onedrive打不开解决方法:首先我们右键左下角开始菜单,打开...
    99+
    2023-07-02
  • Golang打不开如何解决
    这篇文章主要讲解了“Golang打不开如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Golang打不开如何解决”吧!一、检查 Golang 的环境变量是否正确在 Windows 系统...
    99+
    2023-07-05
  • word文档打开显示目录名无效如何解决
    如果在打开Word文档时,目录名无效,可能是因为目录结构发生了变化或者文件路径发生了改变。以下是一些解决方法:1. 检查文件路径:确...
    99+
    2023-10-09
    word
  • win10 vbs打不开如何解决
    这篇文章主要介绍“win10 vbs打不开如何解决”,在日常操作中,相信很多人在win10 vbs打不开如何解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”win10 vbs打不开如何解决”的疑惑有所帮助!...
    99+
    2023-07-01
  • win10 office打不开如何解决
    这篇“win10 office打不开如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“win10 office打不开如何...
    99+
    2023-07-01
  • win10 excel打不开如何解决
    本文小编为大家详细介绍“win10 excel打不开如何解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“win10 excel打不开如何解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。win10excel打...
    99+
    2023-07-01
  • win7 exe打不开如何解决
    本文小编为大家详细介绍“win7 exe打不开如何解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“win7 exe打不开如何解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。方法一: 使用快捷键按下win+r...
    99+
    2023-07-02
  • windows wegame打不开如何解决
    本篇内容主要讲解“windows wegame打不开如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“windows wegame打不开如何解决”吧!解决方法:运行时出现BUG,已有进程,却...
    99+
    2023-07-01
  • windows easyrecovery打不开如何解决
    本篇内容主要讲解“windows easyrecovery打不开如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“windows easyrecovery打不开如何解决”吧!easyreco...
    99+
    2023-07-01
  • win11 edge打不开如何解决
    本篇内容介绍了“win11 edge打不开如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!解决方法:首先按下快捷键“win+r”进入w...
    99+
    2023-07-01
  • windows gpedit.msc打不开如何解决
    本篇内容介绍了“windows gpedit.msc打不开如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!gpedit.msc打不开解...
    99+
    2023-07-01
  • win11 flashcs6打不开如何解决
    今天小编给大家分享一下win11 flashcs6打不开如何解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。win11fl...
    99+
    2023-07-02
  • 记录解决cmd打不开/闪退
    1.起因: 事情要从万恶的环境配置说起。作为一个受anaconda折磨多次的资深bug maker(bushi),这次我又又又又又又又碰到问题了。 由于一些深度学习包配置问题,我决定将anaconda卸载重装。  我是通过anaconda...
    99+
    2023-09-28
    python 开发语言 人工智能
  • linux目录删除不了如何解决
    如果你在Linux系统中遇到无法删除目录的问题,可以尝试以下几种解决方法:1. 使用sudo命令:使用sudo命令以管理员权限执行删...
    99+
    2023-08-23
    linux
  • 织梦CMS二级目录打不开的解决方案分享
    织梦CMS(DedeCMS)是一款常用的开源网站内容管理系统,它具有丰富的功能和灵活的扩展性,受到众多站长的青睐。然而,有时候在使用过程中可能会遇到一些问题,比如二级目录打不开的情况。...
    99+
    2024-03-13
    解决方案 织梦cms 二级目录
  • win10wlan属性打不开如何解决
    win10wlan属性打不开如何解决?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。方法一、使用360驱动大师修复wlan在笔记本键盘上找一下无线开关,如图下所示,F5就是无...
    99+
    2023-06-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作