【问题标题】:Include one PHP file into another将一个 PHP 文件包含到另一个中
【发布时间】:2011-10-27 19:48:08
【问题描述】:

我需要将一个 PHP 文件包含到另一个文件中。不过,需要包含的 PHP 文件位于单独的目录中。它是这样设置的:

folder1/global-functions.php
folder1/folder2/functions.php

我需要在“functions.php”中包含“global-functions.php”

我试过了:

<?php include("../global-functions.php"); ?>

但这行不通。它返回此错误消息:

警告:include(../global-functions.php) [function.include]:无法打开流:/home/user/public_html/wp-content/themes/folder1/folder2/ 中没有这样的文件或目录第 2 行的 custom_functions.php

警告:include() [function.include]: 未能打开 '../global-functions.php' 以包含 (include_path='.:/usr/lib/php:/usr/local/lib/php' ) 在 /home/user/public_html/wp-content/themes/folder1/folder2/custom_functions.php 第 2 行

【问题讨论】:

  • 您想要包含您的全局函数,但在您的代码中,您只包含了 functions.php。 ..我认为您必须将其更改为
  • 我觉得你试错了...

标签: php


【解决方案1】:

尝试使用绝对路径包含文件:类似这样:

<?php include ($_SERVER['DOCUMENT_ROOT']."/folder1/global-functions.php");?>

【讨论】:

  • 这似乎不起作用。我收到与上述相同的错误消息。
  • 我没有使用 $_server 数组,而是输入了完整路径,它似乎已经奏效了。
  • @Nick 输入完整路径的问题是,如果您稍后将代码复制到另一台服务器,它可能不起作用,因为路径会不同。 $_SERVER['DOCUMENT_ROOT'] 应该包含您的 Web 根文件夹的绝对路径(即 public_html)。
  • @w3d 我尝试了几次,但它根本不起作用。我觉得这是一个wordpress问题。我将进一步调查,因为不完整代码上的小片段让我很恼火。感谢您的帮助!
  • Wordpress 可能会遇到 $_SERVER 对象的问题,有时会限制对它的访问 [wordpress.org/support/topic/… 。除非您的服务器上的某些内容发生更改,否则它是否硬编码在...中并不重要。
【解决方案2】:

您的原始包含失败,因为...包含中的相对路径是相对于当前目录的,在您的情况下不是“folder1/folder2/”。当前目录可能是您从中提供内容的页面。

您需要使用绝对路径(在@Coomie 的回答中借助$_SERVER['DOCUMENT_ROOT'])或更改您的include_path 以包含您包含的文件的位置(但是您不能使用相对路径,但是您反正也不需要)。

【讨论】:

    【解决方案3】:

    您本身就包含了functions.php。将 functions.php 更改为 global-functions.php。

    出于好奇,为什么函数有不同的文件?为什么不制作类和对象,让您的生活更轻松?

    【讨论】:

    • 对不起,我有一个复制 + 粘贴错误,我将 global-functions.php 包含在而不是 functions.php 中。至于您的问题,我正在使用 WordpressMU 中的论文主题。这意味着每个 MU 博客安装都有一个单独的主题版本,它有自己的 functions.php 文件。我想将所有博客安装中的一些常用函数包含在 global-functions.php 文件中。
    猜你喜欢
    • 1970-01-01
    • 2012-05-01
    • 1970-01-01
    • 2012-10-29
    • 2011-11-24
    • 2017-04-06
    • 1970-01-01
    • 2013-02-14
    相关资源
    最近更新 更多