自PHP5.1以来,PHP5.5中的'Include'或'Include_once'是否已更改?

时间:2014-06-27 03:24:44

标签: php

我刚刚重新审视了一年前我写的一些代码,这些代码在PHP5.1中运行良好,但现在不能与PHP5.5一起使用,请帮助。

我有一个dbconfig.php文件:

<?php
$dbtype = "mysql";
$dbhost = 'localhost';
$dbuser = 'SmartyUser';
$dbpass = 'pa55';
$dbname = 'test';
$dbtable = 'pagesetup';
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
define( "HOMEPAGE_NUM_ARTICLES", 5 );
define( "DB_DSN", "mysql:host=localhost;dbname=test" );
define( "TEMPLATE_PATH", "CMStemplates" );
ini_set( "display_errors", true );
date_default_timezone_set( "Australia/Brisbane" );
?>

我过去常常包括&#39;它在几个文件中。但是我现在得到了投诉&#34; 注意:已经在第10行的C:\ wamp2 \ www \ SOURCE CODE \ Pottsville \ dbconfig.php中定义了常量HOMEPAGE_NUM_ARTICLES &#34;

如果我include_oncerequire_once我收到投诉&#34; 注意:未定义的变量:dbhost &#34; ...

include( 'dbconfig.php' );
try
{
    $this->objMyPDO=new PDO('mysql:host=' . $dbhost . ';dbname=' . $dbname , $dbuser, $dbpass);
}

......有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您似乎遇到了范围问题,因此,如果您include该文件多次失败,那么当您使用其他范围文件时,您include_once将不会被包含在内。我想如果你继续使用include并检查config.php中的常量它会起作用:

<?php
$dbtype = "mysql";
$dbhost = 'localhost';
$dbuser = 'SmartyUser';
$dbpass = 'pa55';
$dbname = 'test';
$dbtable = 'pagesetup';
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
if(!defined("HOMEPAGE_NUM_ARTICLES")) define( "HOMEPAGE_NUM_ARTICLES", 5 );
if(!defined("DB_DSN")) define( "DB_DSN", "mysql:host=localhost;dbname=test" );
if(!defined("TEMPLATE_PATH")) define( "TEMPLATE_PATH", "CMStemplates" );
ini_set( "display_errors", true );
date_default_timezone_set( "Australia/Brisbane" );
?>

希望它有所帮助!

答案 1 :(得分:0)

include_oncerequire_once与过去的php版本相比没有变化。唯一的问题是当你有一个数据库连接文件时,它不能包含一次,必须直接包含它。使用includerequire