【问题标题】:PHP objective sometimes work sometimes notPHP目标有时工作有时不
【发布时间】:2014-06-24 23:47:00
【问题描述】:

我在 php 5.3.28 上遇到了一个非常奇怪的问题

我有这个代码:

ob_start( );
session_start( );
include( "../common.php" );
check_user_login( );
$Pageination->Pagination( );
$p = $Pageination;

我在我的所有网站上都使用此代码进行分页,但我不知道为什么有时我会收到此错误

PHP 致命错误:调用未定义函数 Pagination() in

有时这段代码工作得很好没有错误!

[更新 1]

这段代码来自我的 main/main.php

ob_start( );
session_start( );
include( "../common.php" );
check_user_login( );
$Var_120->Pagination( );
$p = $Var_120;
$page = setpage( );
$Var_336->AdminLoginlist( );
$al = $Var_336;

及其工作

我的 main/edit-faq.php 中没有此代码

ob_start( );
session_start( );
include( "../common.php" );
check_user_login( );
$Var_312->Pagination( );
$p = $Var_312;
$page = setpage( );
$Var_528->viewcategory( );

不工作,错误就在

致命错误:在非对象上调用成员函数 Pagination() 在 /home/zmiintco/public_html/z/main/edit-faq.php 第 91 行

这是我的 common.php 代码

include( "lib/connect.php" );
include( "lib/function.php" );
include( "lib/pagination.php" );
include( "lib/validation.php" );
include( "lib/simpleimage.php" );
include( "language/".get_page_settings( "11" ).".php" );

【问题讨论】:

  • “Pagination”在同一行代码中有两种不同的拼写方式,您不会感到困扰吗?
  • 我从没想过/考虑过,

标签: php logic


【解决方案1】:

首先,在脚本顶部设置错误报告:

error_reporting(E_ALL);
ini_set('display_errors', 1);

现在您很可能会收到以下错误(如您所述):

PHP 致命错误:调用未定义函数 Pagination() in

那是因为你的变量$Pageination 没有被实例化。 只需实例化它,然后调用它的成员函数。

ob_start( );
session_start( );
include( "../common.php" );
check_user_login( );

$Pageination = new Pagination();
$Pageination->Pagination( );
$p = $Pageination;

假设它是一个存在于您的 common.php 包含中某处的类?


您能否在common.php 中显示代码?

【讨论】:

  • @madman 你在哪里实例化这些类以便能够调用它的方法?
  • 这是我的分页类 Pagination{function getPaginationString... 但我无法理解你的问题
  • @madman 我的问题是:你在哪里创建这些类?即 - $pageination = new Pagination();?
  • 在第 90 行,就在课程结束后,像这样
  • @madman 所有拼写/变量名都正确吗?它区分大小写..?
【解决方案2】:

您可能已将错误报告设置为不显示警告。结果,您看不到您的 include() 语句失败。因此,您的 Paginator 类对您的脚本不可用,并在您尝试实例化它时导致致命错误。

有关如何正确设置错误报告的详细信息,请参阅How to get useful error messages in PHP?

这很可能是由于您使用了该文件的相对路径,当脚本不是包含它的目录下的一个目录时,这是不正确的。将include的路径改为绝对路径即可解决此问题。

例如:

include( "/full/path/to/includes/common.php" );

【讨论】:

  • 我确定我没有任何相关的路径问题
  • “非常确定”不是“100% 确定”。它是为什么它有时有效的唯一解释。无论如何,使用完整路径来避免此问题通常是一种好习惯。
  • 他们都使用相同的代码,一个工作另一个不工作。
  • 这很好地表明这是您的问题。您是否尝试过将完整路径放入您的 PHP 代码?这样你就肯定知道了。它应该是您接下来要做的事情
  • 我的共享主机是否可能是我所有问题的根源?
猜你喜欢
  • 1970-01-01
  • 2015-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多