2013-03-14 79 views
-1

我即将发疯。不知道为什么它一直失败。require_once失败

index.php 
chdir(__DIR__); 
if(!defined('ARCTICA_CORE_DIR')) 
    define('ARCTICA_CORE_DIR', './arctica/core/'); 

require_once(ARCTICA_CORE_DIR . 'Arctica.php'); 

echo ARCTICA_CORE_DIR -> Correctly outputs ./arctica/core/ 

BUUUUUUT; 

Warning: require_once(./arctica/core/Arctica.php): failed to open stream: No such file or directory in C:\wamp\www\Arctica\index.php on line 18 
Fatal error: require_once(): Failed opening required './arctica/core/Arctica.php' (include_path='.;C:\php\pear') in C:\wamp\www\Arctica\index.php on line 18 

操作系统是Windows 7

这是我的应用程序的路径:

C:\wamp\www\Arctica\index.php 

这是文件的我想需要的路径:

C:\wamp\www\Arctica\arctica\core\Arctica.php 

怎么了?我错过了什么吗?我敢打赌,这是一些我忽略的东西...

+0

您是否尝试过使用DIRECTORY_SEPARATOR常量而不是硬编码/ – ZolaKt 2013-03-14 22:54:00

+0

做:'echo ARCTICA_CORE_DIR。 'Arctica.php';'你知道问题是什么。 – 2013-03-14 22:54:07

+0

文件权限。 – 2013-03-14 22:54:14

回答

0

问题是有第二个不必要的.php扩展名。 Arctica.php.php.

Windows 7没有显示文件扩展名。当我将文件复制到Linux环境中时我注意到了它。

2

可能C:\wamp\www\Arctica\arctica是不是在你的包含路径。说(include_path='.;C:\php\pear')。你可以找到echo get_include_path();,你可以使用set_include_path

为你添加自己的路径。为了这个目的,真的不需要开始玩chdir();

另外我会删除点。

define('ARCTICA_CORE_DIR', '/arctica/core/');

,然后为什么不使用完整路径?

define('ARCTICA_CORE_DIR', __DIR__.'/arctica/core/'); 
+0

我从来没有依赖过set_include_path。每个应用程序用于正常工作。我会尝试你的解决方案。编辑:仍然是一样的。 “警告:require_once(C:\ wamp \ www \ Arctica/arctica/core/Arctica.php):无法打开流:” – 2013-03-14 22:58:59