我成功使用以下脚本在我的网站上的其他文件夹中加载会话变量:
<?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系统)中完美运行......对于我正在研究的这个特殊的脚本,它只能在第一次运行。它确实成功加载了我的标题和变量,然而,下次加载页面时无法正常工作。
任何人都可以提供解释/解决方案吗?谢谢!
答案 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开发中具有特殊含义。