在外部文件夹中加载变量:仅运行一次

时间:2011-05-28 14:49:36

标签: php session variables include

我成功使用以下脚本在我的网站上的其他文件夹中加载会话变量:

<?php
require('../includes/configure.php');
ini_set('include_path', DIR_FS_CATALOG . PATH_SEPARATOR . ini_get('include_path'));
chdir(DIR_FS_CATALOG);
require_once('includes/application_top.php');
?> 

这个脚本允许我在之后加载我的标题模板,其中包括我想要的变量输出:

<?php
include('includes/templates/header.php');
?>

所以,事情是这个脚本在其他三个场景(CMS系统)中完美运行......对于我正在研究的这个特殊的脚本,它只能在第一次运行。它确实成功加载了我的标题和变量,然而,下次加载页面时无法正常工作

任何人都可以提供解释/解决方案吗?谢谢!

1 个答案:

答案 0 :(得分:0)

当您回答评论“它不起作用”意味着“我得到一个空白页面”时,您应该做的第一件事是启用PHP的错误报告。放在脚本的开头:

ini_set('error_reporting', E_ALL);
ini_set('display_errors', 'On'); // shows in the web page instead of just logs

然后您的页面可能不会保持空白,并且您将收到有用的错误消息。

其次,您应该将include替换为require。这样,如果PHP无法找到该文件,您将收到致命错误。根据内容,require_once可能更适合。

然后,您应该对包含中的相对路径保持谨慎。它们不是立即相对于包含的脚本。 PHP首先尝试使用包含路径和调用脚本的路径(首先为此HTTP查询启动的文件)。建议使用完整路径:

require dirname(dirname(__FILE__)) . '/includes/configure.php';
require dirname(__DIR__) . '/includes/configure.php'; // PHP5.3 only

最后一件事:当你处理应用程序常量时,不要使用表达式会话变量。 “Session”在PHP和Web开发中具有特殊含义。