PHP在spl_自动加载时需要_一次,不会加载到子文件夹中
我正在从头开始构建一个web应用程序,这是我第一次尝试这样做 从子目录中的with执行一次PHP在spl_自动加载时需要_一次,不会加载到子文件夹中,php,Php,我正在从头开始构建一个web应用程序,这是我第一次尝试这样做 从子目录中的with执行一次require\u时出现问题 文件夹结构: Root + browse -> file.php + classes -> User.php + core -> init.php + + -> index.php -> random.php 我的每个文件都是这样开始的,它工作得很好 <?php requi
require\u
时出现问题
文件夹结构:
Root + browse -> file.php
+ classes -> User.php
+ core -> init.php
+
+
-> index.php
-> random.php
我的每个文件都是这样开始的,它工作得很好
<?php
require_once '/core/init.php';
# Head
require_once '/head.php';
$user = new User();
# Header
require_once '/header.php';
错误:
Warning: require_once(classes/User.php): failed to open stream: No such file or directory in /home/vagrant/vm/data/core/init.php on line 27
Fatal error: require_once(): Failed opening required 'classes/User.php' (include_path='.:/usr/share/php:') in /home/vagrant/vm/data/core/init.php on line 27
我的init.php
文件:
session_start();
$directory = $_SERVER['DOCUMENT_ROOT'];
spl_autoload_register(function ($class) {
require_once 'classes/'.$class.'.php';
});
require_once $directory.'/classes/Hash.php';
require_once $directory.'/functions/sanitize.php';
我甚至还添加了$directory'/class/'.$class.'.php'代码>
这破坏了整个网站
我还尝试在我的文件.php
中使用$directory=$\u SERVER['DOCUMENT\u ROOT']进行引用;执行需要一次$directory./head.php'
我不知道我做错了什么
谢谢大家
我正在从头开始构建一个web应用程序,这是我第一次尝试这样做
既然你正在建设新网站,你应该遵循的具体的。已经有与PSR-0/4兼容的自动加载器,但您可以将此作业留给
回到您的问题,尽可能使用绝对路径
spl_autoload_register(function ($class) {
require_once __DIR__.'/../classes/'.$class.'.php';
});
\uuuu DIR\uuuu
是一个神奇常数,在本例中表示init.php的目录的绝对路径
我正在从头开始构建一个web应用程序,这是我第一次尝试这样做
既然你正在建设新网站,你应该遵循的具体的。已经有与PSR-0/4兼容的自动加载器,但您可以将此作业留给
回到您的问题,尽可能使用绝对路径
spl_autoload_register(function ($class) {
require_once __DIR__.'/../classes/'.$class.'.php';
});
\uuuu DIR\uuuu
是一个神奇常数,在这种情况下表示init.php的目录的绝对路径
问题可能是当前工作目录
-请参见getcwd()
与PHP文件不同-请参见\uuuuu DIR\uuuuu
。相对路径基于当前工作目录
而不是\uuuuu目录
。如回答中所述-最好始终使用绝对路径。问题可能是当前工作目录
-请参阅getcwd()
与PHP文件不同-请参见\uuuuu DIR\uuuuu
。相对路径基于当前工作目录
而不是\uuuuu目录
。正如答案中提到的,最好始终使用绝对路径。