无法从其他文件打开所需文件

时间:2019-10-20 21:27:27

标签: php directory

所以我有domain.be/index.php

然后我需要Controllers/indexController.php;

在该文件中,我需要../Model/opalus.php;

所以我为我的框架构建了第一个控制器,不错。

但是如果我在index.php中使用控制器,我会得到

PHP Fatal error:  require(): Failed opening required '../Model/opalus.php' (include_path='.:/opt/cpanel/ea-php56/root/usr/share/pear') in /home/webkeuke/public_html/Controllers/indexController.php on line 2

我尝试使用_DIR__.././等,有人可以解决此问题吗?

1 个答案:

答案 0 :(得分:1)

有时候,在复杂项目中,PHP包含的文件乘以相对路径(.././)会带来很多问题,尤其是在错误跟踪方面。

为防止您的项目和您自己陷入此问题,我建议使用全路径对所有文件进行包含(更改include("../inc/extra.php"-TO include("/var/www/myproject/inc/extra.php")。

但是,如果文件系统路径发生更改(例如,当您更改服务器环境或目录时,则必须更改其中包含所有文件的所有文件),此方法也可以做很多工作。

所以最好的解决方案是在脚本开始的地方在全局变量中定义基本文件系统路径。然后在每个include()上使用已定义的基本文件系统路径变量;

您的案例示例(index.php):

<?php
define ("FSPATH","/home/webkeuke/public_html/");
[your code]
// include /home/webkeuke/public_html/Controllers/indexController.php
include (FSPATH."Controllers/indexController.php"); 
[your code]
?>

您的案例示例(Controllers / indexController.php):

<?php
[your code]
// include /home/webkeuke/public_html/Model/opalus.php
include (FSPATH."Model/opalus.php");
[your code]
?> 

该解决方案应防止您陷入包含错误的“包含路径”的位置。

相关问题