我的项目中有以下文件结构:
+ server
+ api
+ product
- get.php
+ database
- product.php
+ model
- product.php
+ service
- product.php
+ utilities
- controller.php
- database.php
然后在我的server/api/product/get.php
中,我有以下行:
require_once("../../service/product.php");
require_once("../../utilities/controller.php");
我相信这是正确加载服务,因为当我使用失眠来达到端点时,我在server/api/service/product.php
文件中得到这个错误:
警告:require_once(../model/product.php): failed to open stream: No在C:全路径删除serverserviceproduct.php在第2行
致命错误:require_once(): Failed open required". ./模型/product.php"(include_path = C: xampp php 梨的)
在我的server/service/product.php
文件中,我有以下内容:
require_once("../model/product.php");
require_once("../database/product.php");
在第一个require_once
上失败。
所以我的问题是为什么我的控制器层中的相对路径工作,但服务层中的相对路径失败?
您可以使用__DIR__
魔术常量作为替代方法,根据该常量给出的文档:'文件的目录。如果在包含中使用,被包含文件的目录将返回'。通过相对路径减少错误的可能性。
的例子:
require_once(__DIR__ . "/../../service/product.php");
使用include和require时不要带__DIR__。开始于的相对路径。或. .以当前目录为基础。当前工作目录取决于各种设置。__DIR__总是文件本身所在的目录。
For包含服务器/服务/product.php从文件中服务器/api/产品/get.php你可以这样做:
require_once __DIR__."/../../service/product.php";