2011-05-28 133 views
3

我成功地使用下面的脚本加载在我的网站上的其他文件夹中的会话变量:加载变量:只能使用一次

<?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

只要'它不会工作',你能提供更多细节吗?它究竟做了什么?它是否会在浏览器中给你一个错误,你有没有检查你的php错误日志? – mrpatg 2011-05-28 20:07:46

+0

@Patrick好的,我检查了我的日志,我看到的与此文件夹相关的唯一信息是:[Mon May 30 10:14:30 2011] [error] [client blah.blah.blah.76]文件不存在: /home/dev/public_html/faq/images/feedback.gif,referer:http://www.mysite.com/faq/...不知道如何从中获得空白页。我知道这与我发布的第一部分代码有关,因为当我查看源代码时,它就位于body标签下的空白处,正好位于该代码的放置位置。 – 2011-05-30 14:24:07

+0

你是否在任何可能影响到这个设置的会话变量设置?第二次不工作的事实似乎指向类似的东西 – 2011-06-01 15:26:28

回答

0

正如你对一个评论所说:“它不会工作”的意思是“我得到一个空白页面”,你应该做的第一件事是启用PHP的错误报告。放在脚本的开始部分:

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

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

其次,您应该用require替换include。这样,如果PHP找不到这个文件,你会得到一个致命的错误。取决于内容,require_once可能更适合。

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

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

最后一件事:当你处理与应用常量不使用表达式会话变量。 “会话”在PHP中有一个特殊的含义,并且在一般的web开发中。