【问题标题】:Why isn't my variable and functions being recognized from includes file为什么不能从包含文件中识别我的变量和函数
【发布时间】:2011-07-17 15:39:26
【问题描述】:

这是名为“VariablesFunctions.php”的包含文件:

$currWebPage = '';
function getPageUrl( )
{
    global $currWebPage; 
    if( $_SERVER['HTTPS'] == 'on' ) $currWebPage .= 's';
    $currWebPage .= '://';
    if( $_SERVER["SERVER_PORT"] != "80" )
        $currWebPage .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
    else $currWebPage .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}  

这里是调用它的文件(index.php):

<?php include( 'VariablesFunctions.php' );
      getPageUrl( );
  echo $currWebPage;
?>

两个文件都保存在同一个目录下,当启动 index.php 文件时,浏览器显示未定义函数(上面 index.php 文件中的第 2 行),为什么?

【问题讨论】:

  • 浏览器没有说明file not found吗?
  • 不。相反,它会复制调用它的 VariablesFunctions.php 的全部内容,这是为什么呢?
  • 因为您使用的不是您在此处发布的代码

标签: php function include


【解决方案1】:

这有时意味着另一个同名的包含文件(旧版本或备份版本)存在于 include_path 中的其他位置。为避免这种情况,请使用显式路径并强制其可靠地失败:

<?php require('./VariablesFunctions.php');
    getPageUrl();

这个问题也可能是由混合大小写的文件名引起的。在 BSD/Linux 服务器上,文件名必须完全匹配,不区分大小写。

另外:避免通过全局变量返回结果,使其成为适当的返回值。

【讨论】:

  • 这并没有解决问题。我在上面的代码中遇到的另一个问题是,VariablesFunctions.php 的全部内容都被复制到我调用文件的地方,这是为什么呢?
  • @dave:你忘记了文件开头的&lt;?php。 (这本来是一个重要的信息。)
  • 天哪,你完全正确!你得到了最好的答案,非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-26
  • 2021-09-09
  • 2020-10-11
  • 2020-11-25
相关资源
最近更新 更多