我有一小段代码是用PHP的早期版本(不是5.3)编写的,我觉得解释器抓住一个常量的交叉使用作为通知消息然后最终咳出一个致命的错误很奇怪常量在文件中定义,该文件与报告通知的文件不同。 也就是说,例如,我在文件A中定义了我的常量,它在程序启动时被初始化
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。现在它可能已经过时了,如果以后我需要使用最新版本,重新下载新版本并删除旧的psss会怎么样?
答案 0 :(得分: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
将按原样运行。
答案 1 :(得分:0)
require_once(__DIR___.'/A.php');
__DIR__
给出执行文件的当前目录。
答案 2 :(得分:0)
你应该在你想要的文件上定义一个常量,如:
define("APPLICATION_NAME","my app");
然后在另一个文件中使用:
include_once 'yourfile_with_constant_value';
$value = APPLICATION_NAME;
请注意用大写字来定义常量。