Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.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 是否需要CodeIgniter子文件夹中的类?_Php_Codeigniter - Fatal编程技术网

Php 是否需要CodeIgniter子文件夹中的类?

Php 是否需要CodeIgniter子文件夹中的类?,php,codeigniter,Php,Codeigniter,我有这个结构 controllers - base.php \ subfolder - home.php 在home.php中,我想调用 require("../base.php") 但是它给了我一条错误消息,说找不到该文件。它在同一个文件夹上工作 有没有办法让它在子文件夹上工作?试试: require("/<full dir path>/base.php"); 这将告诉您使用哪条路径。请尝试: require("/<full dir path>/base.ph

我有这个结构

controllers
- base.php
\ subfolder
  - home.php
home.php
中,我想调用

require("../base.php")
但是它给了我一条错误消息,说找不到该文件。它在同一个文件夹上工作

有没有办法让它在子文件夹上工作?

试试:

require("/<full dir path>/base.php");
这将告诉您使用哪条路径。

请尝试:

require("/<full dir path>/base.php");

这将告诉您要使用的路径。

您可以尝试使用完整路径:

$origin = $_SERVER['DOCUMENT_ROOT'];
$home = $origin. "/controllers/home.php";
require($home);
但我明白这是一个长期的痛苦,但这是一个解决办法。我以前从未遇到过这样的问题


但也许这会有更多的帮助

您可以尝试使用完整路径:

$origin = $_SERVER['DOCUMENT_ROOT'];
$home = $origin. "/controllers/home.php";
require($home);
但我明白这是一个长期的痛苦,但这是一个解决办法。我以前从未遇到过这样的问题


但也许这会有更多的帮助

CodeIgniter从
index.php
脚本中执行,
require
函数的路径基于
index.php
路径解析。例如,如果您将
test.php
放在CodeIgniter根文件夹中,然后从控制器调用
require./test.php'
,则
test.php
将毫无问题地包含在内

要回答这个问题,我们需要php magic常量
\uuuu DIR\uuuu
,它总是设置为当前脚本文件夹。答案是:

require __DIR__."/../base.php";
home.php
中调用

编辑:与平台无关的解决方案是:

require __DIR__.DIRECTORY_SEPARATOR."..".DIRECTORY_SEPARATOR."base.php";

CodeIgniter是从
index.php
脚本中执行的,
require
函数的路径是基于
index.php
path解析的。例如,如果您将
test.php
放在CodeIgniter根文件夹中,然后从控制器调用
require./test.php'
,则
test.php
将毫无问题地包含在内

要回答这个问题,我们需要php magic常量
\uuuu DIR\uuuu
,它总是设置为当前脚本文件夹。答案是:

require __DIR__."/../base.php";
home.php
中调用

编辑:与平台无关的解决方案是:

require __DIR__.DIRECTORY_SEPARATOR."..".DIRECTORY_SEPARATOR."base.php";

在撰写本文时,公认的答案是正确的,因为
require
(和类似的函数)路径基于index.php的位置。然而,CodeIgniter在index.php中定义了非常有用的常量,允许您创建应用程序各个部分的路径

APPPATH
常量非常适合指向控制器/库/etc

require APPPATH . 'controllers/base.php';

更好的解决方案是以
application/core/MY_controller.php
的形式创建一个基本控制器。然后,您可以使用
MY_Controller
扩展控制器,而无需任何文件

在撰写本文时,公认的答案是正确的,因为
require
(和类似的函数)路径基于index.php的位置。然而,CodeIgniter在index.php中定义了非常有用的常量,允许您创建应用程序各个部分的路径

APPPATH
常量非常适合指向控制器/库/etc

require APPPATH . 'controllers/base.php';

更好的解决方案是以
application/core/MY_controller.php
的形式创建一个基本控制器。然后,您可以使用
MY_Controller
扩展控制器,而无需任何文件

我在Windows上进行测试,但我将部署到Linux或Windows中的Linux服务器运行代码?我在Windows上进行测试,但我将部署到Linux或Windows中的Linux服务器运行代码?问题是,PHP中的路径总是相对于第一个文件路径,在本例中是home.PHP。因此,您必须包含dir“controllers”。取决于PHP和/或服务器的配置。@BrunoLM别忘了为您的问题选择答案;)星期五快乐!问题是PHP中的路径总是相对于第一个文件路径,在本例中是home.PHP。因此,您必须包含dir“controllers”。取决于PHP和/或服务器的配置。@BrunoLM别忘了为您的问题选择答案;)星期五快乐!