PHP如何在我的项目中处理包含文件和相对路径
我正在开发一个PHP网站,在Mac OS中使用Eclipse 我想知道什么是处理包含句子的正确方法 我有一个php文件,它是我的主“lib”脚本。此文件通过include命令访问其他文件。问题在于如何引用这些子文件,因为include中的相对路径基于入口点脚本,而不是当前脚本 假设我有一个mainlib.php文件,可以访问sublib.php文件。可能是这样的: Project Root: [libs] mainlib.php sublib.php [subdir] entryPointB.php entrypointA.php 项目根目录: [图书馆] mainlib.php sublib.php [分录] entryPointB.php entrypointA.php 我想将include“sublib.php”语句放在mainlib.php中,因此每次需要时只能包含mainlib.php,而不是同时包含这两个语句。(在这个示例中只有两个文件,但在我的实际项目中会有更多的文件 假设我的mainlib.php文件包含以下内容:PHP如何在我的项目中处理包含文件和相对路径,php,macos,apache,Php,Macos,Apache,我正在开发一个PHP网站,在Mac OS中使用Eclipse 我想知道什么是处理包含句子的正确方法 我有一个php文件,它是我的主“lib”脚本。此文件通过include命令访问其他文件。问题在于如何引用这些子文件,因为include中的相对路径基于入口点脚本,而不是当前脚本 假设我有一个mainlib.php文件,可以访问sublib.php文件。可能是这样的: Project Root: [libs] mainlib.php sublib.php
<?php include "libs/sublib.php; ?>
它将在EntryPointB.php上工作,但在entrypointA.php中失败
我怎样才能解决这个问题
我尝试或思考过的一些可能性:
- 使用绝对路径-将不是一个好的解决方案,因为每次我将文件上传到产品时,我都必须更改它
- 在$u服务器['DOCUMENT\u ROOT']前面加上path-在Mac上返回/Library/WebServer/Documents,但我的站点位于UserFolder/Sites/MySiteName中
- 从
变量获取目录-不起作用,因为它返回的是入口点文件,而不是项目根\uuuu DIR\uuuu
- 全局配置-我考虑在全局变量中放置硬编码的根路径。想法是在全局脚本中定义此变量,在生产中我只需更新此脚本。但问题仍然是,如何引用此脚本而不出现路径问题
- 我解决了这个问题。不知道这是否是最好的方法,但它解决了我的问题。如果有人有同样的问题,我会把它留在这里
我创建了一个名为config.php的文件,其中包含以下内容:
<?php define("ROOT_PATH", "/Path/to/My/Project/"); ?>
无论entrypoint脚本位于何处,它都会工作,因为它始终指向当前文件的同一目录,而不是entrypoint。然后我只需将ROOT_路径添加到其他include:
inclue ROOT_PATH."/subdir/file.php";
使用和从相对路径构建绝对路径。这就是为什么会有环境配置(也包括vagrant/docker等)这样的概念,以便您可以处理这些差异(或者在虚拟化的情况下,只是没有)。您是否检查了此
@RisulIslam?恐怕没有任何可能起作用。(不仅仅是因为语法错误。)@axiac\uuuuu DIR\uuuuu
的问题是它将返回入口点文件,而不是项目根目录。我实际上在我的问题中加入了该选项,但格式化将其更改为DIR,我将更新问题以正确显示。注释中有许多有用的提示,比这更好。
include "config.php";
inclue ROOT_PATH."/subdir/file.php";