2012-03-16 50 views
1

我有一小段代码是用以前版本的PHP编写的(不是5.3),我觉得解释器捕获常量的交叉使用作为通知消息,然后最终当常量在与报告通知不同的文件中定义时,咳嗽致命错误。 也就是说,例如,我文件中定义我的常数A,其在程序启动在另一个文件中使用define常量

define('SOME_CONSTANT','something'); 

和文件时B.php

require_once('A.php'); 
Call-function-that-uses-fileA's-SOME_CONSTANT 

文件B被报道的通知消息和初始化致命错误。

致命错误可以大致描述为

require_once()[function.require]:无法开口需要....

,其中 “......” 表示可能包含或可能不会与当前文件B相关的包含路径的很长一行。我很感激您提供的任何帮助或建议。

这是由于我使用新的PHP版本,而我的代码是写在旧的?如何在不重新安装PHP的情况下修复这些消息?

编辑

唯一的原因,我不想重新安装PHP是因为我不想永远改变PHP每当我有一个新的项目工作。现在它可能已经老了,如果以后我需要使用最新版本,请重新下载新版本并删除旧的版本?

+0

不知道这是否与你的常数有关,请检查B.php – Ing 2012-03-16 11:40:55

+2

中的'file_exists('A.php')'给出的错误肯定表明文件A.php无法被解释器找到。你必须检查A.php是否包含正确的路径。 – Mikhus 2012-03-16 13:47:36

+0

档案a.php在哪里? – 2012-03-23 22:21:12

回答

0
require_once(__DIR___.'/A.php'); 

__DIR__给出执行文件的当前目录。

2

我知道这是老问题,但万一有人被绊倒在它...

不幸的是,require_once('A.php');呼叫搜索的a.php文件在同一目录下的文件B.php。如果您希望包含A.php文件,则需要为其提供文件的完整目录路径,或者修改php.ini文件的include_path字符串以包含宿主目录A.php的父目录。

如果你不想修改php.ini文件,那么简单地给它指定文件的完整路径即可。

@Binaek:__DIR__魔术变量只会返回完整路径B.php是其中因为a.php只会文件不会出现在该目录下,否则会require_once作为工作是行不通的。

0

你应该定义在像你想要的档案恒定:

define("APPLICATION_NAME","my app"); 

那么在这样的另一个文件使用:

include_once 'yourfile_with_constant_value'; 
$value = APPLICATION_NAME; 

请充分照顾到定义与大写的字不变。

相关问题