gpt4 book ai didi

php - 奇怪的需要路径错误

转载 作者:行者123 更新时间:2023-12-04 16:52:23 24 4
gpt4 key购买 nike

我的自动加载器功能遇到了一个非常奇怪的问题。

这是我的自动加载器功能,取自 PSR-0 standard :

function __autoload($className) {

$className = ltrim($className, '\\');
$fileName = '';
$namespace = '';
$lastNsPos = strrpos($className, '\\');
if ($lastNsPos) {
$namespace = substr($className, 0, $lastNsPos);
$className = substr($className, $lastNsPos + 1);
$fileName = str_replace('\\', DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR;
}
$fileName .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';

require dirname(__FILE__) . DIRECTORY_SEPARATOR . $fileName;
}

我对该函数所做的唯一修改是添加了 dirname(__FILE__)require函数,因为我将此函数保存在名为 includes 的目录中,我所有的其他类(class)都保存在那里。这段代码适用于我的另一个项目,所以我不确定这里出了什么问题。

我有一个文件: includes\SQL\Persistable.php命名空间声明为 namespace SQL; .当自动加载器运行时,它给了我这个错误:
Warning: require(/home/user/public_html/phpProject/includes/Persistable.php): failed to open stream: No such file or directory in /home/user/public_html/phpProject/includes/config.php on line 52

我知道那个文件不存在,但我不确定它为什么要加载它。它应该要求 /home/user/public_html/phpProject/includes/SQL/Persistable.php .但是,当我更改 require 时像这样的功能(只是为了测试):
require dirname(__FILE__) . DIRECTORY_SEPARATOR . ' ' . $fileName;

我得到:
Warning: require(/home/user/public_html/phpProject/includes/ SQL/Persistable.php): failed to open stream: No such file or directory in /home/user/public_html/phpProject/includes/config.php on line 52

我不确定为什么添加空格,或者实际上除了正斜杠之外的任何字符都会导致 require函数包含 $fileName 的第一部分.我也试过:
echo dirname(__FILE__) . DIRECTORY_SEPARATOR . $fileName;

其输出是:
/home/user/public_html/phpProject/includes/SQL/Persistable.php

但是,显然没有像 require中那样解释。功能。为什么?

我也试过 __DIR__ , 通过 set_include_path() 显式设置包含路径, 将该函数放在其自己的单独文件中并包含该文件,以及 realname() ,他们都没有工作。正如我所说, 此代码在 之前有效,所以我不知道为什么我现在想出这个问题!

最佳答案

违规语句是获取准备好的语句的结果:

$stmt->setFetchMode(\PDO::FETCH_CLASS | \PDO::FETCH_PROPS_LATE, 'Persistable');

将其更改为:
$stmt->setFetchMode(\PDO::FETCH_CLASS | \PDO::FETCH_PROPS_LATE, '\SQL\Persistable');

帮助解决了问题……但现在我面临着 PDO 的问题,这是另一个问题。

关于php - 奇怪的需要路径错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14335151/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com