Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.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_Macos_Apache - Fatal编程技术网

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网站,在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 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";