我正在运行wamp64来本地托管我的网站(这是一个用于测试的vbulletin论坛,如果它有帮助的话)。
我正在尝试创建一个位于子文件夹而不是网站根目录的新网页,但是我遇到了错误。 我试图创建的网页是addons文件夹中的index.php网页。
我的文件结构是:
C:
-wamp64
--www(网站root)
--global.php
---插件
---- index.php
----图像
---包括
----的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 /时的错误:
警告:require_once(C:\ wamp64 \ www \ addons / includes / init.php):失败 打开流:C:\ wamp64 \ www \ global.php中没有这样的文件或目录 第20行
致命错误:require_once():无法打开所需的错误 &#39; C:\ wamp64 \ WWW \附加元件/具备/的init.php&#39; 第20行的C:\ wamp64 \ www \ global.php中的(include_path =&#39;。; C:\ php \ pear&#39;)
以下是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');
来解决该错误。
现在我收到了这个错误:
警告:require_once(C:\ wamp64 \ www \ addons / includes / class_core.php):无法打开流:第51行的C:\ wamp64 \ www \ includes \ init.php中没有此类文件或目录< / p>
致命错误:require_once():无法打开所需&#39; C:\ wamp64 \ www \ addons / includes / class_core.php&#39;第51行的C:\ wamp64 \ www \ includes \ init.php中的(include_path =&#39;。; C:\ php \ pear&#39;)
Class_core.php存在于includes文件夹中。
init.php的第51行是:
require_once(CWD . '/includes/class_core.php');
我尝试将其更改为require_once(__DIR__ . '/includes/class_core.php');
,但它打破了整个网站。
答案 0 :(得分:0)
global.php假设服务器进程是从主C:/ wamp64 / www目录运行的,但由于你是从addon文件夹运行的,CWD将被设置为C:/ wamp64 / www / addon,因此所有的错误
要解决此问题,请在index.php
中执行此操作1)在global.php和init.php等中恢复对VBulletin所做的所有更改......
2)将当前工作目录设置为根目录,可以在任何require_once之前使用index.php顶部的chdir('../')
3)在index.php中要求global.php require_once('global.php');
第2步有效,因为现在php现在将根目录视为工作目录。