require_once 在新文件夹中创建网页时功能错误
require_once function error when creating webpage in new folder
我是 运行 wamp64,在本地托管我的网站(这是一个 vbulletin 论坛,用于测试是否有帮助)。
我正在尝试创建一个位于子文件夹而不是网站根目录中的新网页,但是我 运行 出错了。
我要创建的网页是插件文件夹中的 index.php 网页。
我的文件结构是:
C:
-wamp64
--www (website root)
--global.php
---addons
----index.php
----images
---includes
----config.php
我用于插件的代码 - index.php 是:
<?php
error_reporting(E_ALL & ~E_NOTICE);
define('NO_REGISTER_GLOBALS', 1);
define('THIS_SCRIPT', 'addons');
$phrasegroups = array();
$specialtemplates = array();
$globaltemplates = array(
'ADDONSTESTPAGE'
);
$actiontemplates = array();
require_once('/../global.php');
eval('$navbar = "' . fetch_template('navbar') . '";');
eval('print_output("' . fetch_template('ADDONSTESTPAGE') . '");');
?>
当我在 www 文件夹中创建一个新页面时,它工作得很好(除了我使用 require_once('/global.php');
而不是 require_once('/../global.php');
。
但是,因为这是在一个子文件夹中,我 运行 进入以下错误,因为 global.php 需要的文件一旦在它们内部具有自己的 require_once 函数并且这些文件具有他们自己的 require_once 内部功能等
这是我现在去 localhost/addons/:
时遇到的错误
Warning: require_once(C:\wamp64\www\addons/includes/init.php): failed
to open stream: No such file or directory in C:\wamp64\www\global.php
on line 20
Fatal error: require_once(): Failed opening required
'C:\wamp64\www\addons/includes/init.php'
(include_path='.;C:\php\pear') in C:\wamp64\www\global.php on line 20
这是 global.php 的第 13-20 行:
// identify where we are
define('VB_AREA', 'Forum');
define('CWD', (($getcwd = getcwd()) ? $getcwd : '.'));
// #############################################################################
// Start initialisation
require_once(CWD . '/includes/init.php');
如何在不弄乱使用 global.php 文件的其他文件的情况下解决这个问题?我听说 realpath 是一个常见的解决方案,但我是 php 的新手,不确定如何在这种情况下使用它。
感谢所有帮助,非常感谢,如果您需要更多信息,请随时询问!
好的,我可以通过将 require_once(CWD . '/includes/init.php');
更改为 require_once(__DIR__ . '/includes/init.php');
来解决该错误。
现在我收到这个错误:
Warning: require_once(C:\wamp64\www\addons/includes/class_core.php): failed to open stream: No such file or directory in C:\wamp64\www\includes\init.php on line 51
Fatal error: require_once(): Failed opening required 'C:\wamp64\www\addons/includes/class_core.php' (include_path='.;C:\php\pear') in C:\wamp64\www\includes\init.php on line 51
Class_core.php 存在于包含文件夹中。
init.php 的第 51 行是:
require_once(CWD . '/includes/class_core.php');
我尝试将其更改为 require_once(__DIR__ . '/includes/class_core.php');
但它破坏了整个网站。
global.php 假设服务器进程是来自主 C:/wamp64/www 目录的 运行 但因为你是来自插件文件夹的 运行,CWD 将被设置为C:/wamp64/www/addon ,因此出现所有错误。
要解决此问题,请在 index.php
1) 恢复您在 global.php 和 init.php 等中对 VBulletin 所做的所有更改...
2) 将你当前的工作目录设置为根目录,你可以在 index.php 顶部的任何 require_once
之前使用 chdir('../')
3) 在你的 index.php require_once('global.php');
中需要 global.php
步骤 2 有效,因为现在 php 现在将根目录视为工作目录。
我是 运行 wamp64,在本地托管我的网站(这是一个 vbulletin 论坛,用于测试是否有帮助)。
我正在尝试创建一个位于子文件夹而不是网站根目录中的新网页,但是我 运行 出错了。 我要创建的网页是插件文件夹中的 index.php 网页。
我的文件结构是:
C:
-wamp64
--www (website root)
--global.php
---addons
----index.php
----images
---includes
----config.php
我用于插件的代码 - index.php 是:
<?php
error_reporting(E_ALL & ~E_NOTICE);
define('NO_REGISTER_GLOBALS', 1);
define('THIS_SCRIPT', 'addons');
$phrasegroups = array();
$specialtemplates = array();
$globaltemplates = array(
'ADDONSTESTPAGE'
);
$actiontemplates = array();
require_once('/../global.php');
eval('$navbar = "' . fetch_template('navbar') . '";');
eval('print_output("' . fetch_template('ADDONSTESTPAGE') . '");');
?>
当我在 www 文件夹中创建一个新页面时,它工作得很好(除了我使用 require_once('/global.php');
而不是 require_once('/../global.php');
。
但是,因为这是在一个子文件夹中,我 运行 进入以下错误,因为 global.php 需要的文件一旦在它们内部具有自己的 require_once 函数并且这些文件具有他们自己的 require_once 内部功能等
这是我现在去 localhost/addons/:
时遇到的错误Warning: require_once(C:\wamp64\www\addons/includes/init.php): failed to open stream: No such file or directory in C:\wamp64\www\global.php on line 20
Fatal error: require_once(): Failed opening required 'C:\wamp64\www\addons/includes/init.php' (include_path='.;C:\php\pear') in C:\wamp64\www\global.php on line 20
这是 global.php 的第 13-20 行:
// identify where we are
define('VB_AREA', 'Forum');
define('CWD', (($getcwd = getcwd()) ? $getcwd : '.'));
// #############################################################################
// Start initialisation
require_once(CWD . '/includes/init.php');
如何在不弄乱使用 global.php 文件的其他文件的情况下解决这个问题?我听说 realpath 是一个常见的解决方案,但我是 php 的新手,不确定如何在这种情况下使用它。
感谢所有帮助,非常感谢,如果您需要更多信息,请随时询问!
好的,我可以通过将 require_once(CWD . '/includes/init.php');
更改为 require_once(__DIR__ . '/includes/init.php');
来解决该错误。
现在我收到这个错误:
Warning: require_once(C:\wamp64\www\addons/includes/class_core.php): failed to open stream: No such file or directory in C:\wamp64\www\includes\init.php on line 51
Fatal error: require_once(): Failed opening required 'C:\wamp64\www\addons/includes/class_core.php' (include_path='.;C:\php\pear') in C:\wamp64\www\includes\init.php on line 51
Class_core.php 存在于包含文件夹中。
init.php 的第 51 行是:
require_once(CWD . '/includes/class_core.php');
我尝试将其更改为 require_once(__DIR__ . '/includes/class_core.php');
但它破坏了整个网站。
global.php 假设服务器进程是来自主 C:/wamp64/www 目录的 运行 但因为你是来自插件文件夹的 运行,CWD 将被设置为C:/wamp64/www/addon ,因此出现所有错误。
要解决此问题,请在 index.php
1) 恢复您在 global.php 和 init.php 等中对 VBulletin 所做的所有更改...
2) 将你当前的工作目录设置为根目录,你可以在 index.php 顶部的任何 require_once
之前使用 chdir('../')3) 在你的 index.php require_once('global.php');
中需要 global.php步骤 2 有效,因为现在 php 现在将根目录视为工作目录。