PHP - 在多个页面中需要一次

Posted

技术标签:

【中文标题】PHP - 在多个页面中需要一次【英文标题】:PHP - require_once in multiple pages 【发布时间】:2012-11-10 13:14:30 【问题描述】:

我正在使用 LAMP 堆栈来开发 php 应用程序。我正在使用 require_once 来包含类文件。我需要在多个 PHP 页面中使用这些类文件中的函数。因此,我使用 require_once 将这些类文件包含在所有必需的 PHP 页面中。但是,如果我将这些类文件包含在多个页面中,PHP 文件就会变为空白。它什么也不显示。查看源代码也不显示任何内容。

文件:test.php、process.php 和 class.test.php

test.php 有

<?php
    session_start();
    require_once 'classes/class.test.php';

    .
    Few more classes
    .
    .  


?>

<html>   
    <form name = "myForm" method="POST" action="process.php">
       <input type = "text" name="username" value=""/>
       <input type = "submit" value="Submit" />
    </form>   
</html>

进程.php

<?php 
    session_start();
    require_once 'classes/class.test.php';

    $obj_test = new test();
    $obj_test->test();
?>

class.test.php

<?php
    session_start();
    require_once 'class.misc.php';
    require_once 'config.php'; //DB connection details

    function test()
    
        $obj_misc = new misc();
        $id = $obj_misc->random_ID();
        $username = $_POST['username'];             

        $query = "INSERT INTO test_table VALUES ('$id','$username',NOW());
        mysql_query($query);
    
?>

现在,它返回一个空白页。如果我注释掉 process.php 中的 require_once,test.php 页面会显示表单,但在提交表单时 process.php 会抛出错误“找不到类测试”。

在过去的两周里,我一直在努力解决这个问题。 :( 在那之前它工作得很好。我不明白出了什么问题。请帮忙。

【问题讨论】:

也许你应该检查类所在文件的路径。它们会根据需要它们的文件的位置而变化 嗨@sarghau,欢迎来到SO。 +1 格式正确的问题。现在,为什么你有两个test.php sn-ps?问题是你不小心打错了test.php吗? 你检查过你的错误日志吗?我通常建议省略结尾的 ?>,因为它可能导致标题被过早发送。 process.php 中评论某事会如何影响test.php,当你说这不与test.php 互动时?你在误解某事 启用 php 错误,以免下次出现空白页。错误将解释什么是错误的,您不需要在 SO 中发布问题。 【参考方案1】:

process.php 的 PHP 代码有错误;你少了一个分号:

require_once 'classes/class.test.php'

应该是:

require_once 'classes/class.test.php';

如果这不能解决问题,那么您的代码中的某处可能存在其他错误。如果没有完整的源代码,我们将无能为力。

为了将来参考,如果页面变为空白,通常是 PHP 源代码存在问题(即某种类型的解释错误)。作为良好调试策略的一部分,请查看 display_errors 和 error_reporting

【讨论】:

已更正。这是一个涉及大量类和其他 php 文件的巨大代码。所以,我只发布了它引发错误的片段。 in class.test.php $query = "INSERT INTO test_table VALUES ('$id','$username',NOW()); mysql_query($query); 缺少另一个引号 - " - 在字符串的末尾。这有帮助吗? @cegfault 这是一个错字!但这不是问题。如果有语法错误,我使用的IDE会指向。 尝试在所有文件上运行php -l,这将显示语法错误(您的IDE似乎在这里失败了......) @BotondBalázs - 这是一个复制粘贴错误。不是 IDE。【参考方案2】:

试试

error_reporting(E_ALL);

【讨论】:

【参考方案3】:

听起来您的错误报告功能已关闭。你应该检查你的错误日志,看看当它静默失败时抛出了什么异常(这会给你更多的洞察力)。

此外,您可能希望将其添加到流程脚本的顶部:

error_reporting(E_ALL);

【讨论】:

是的,我做到了。但还是空白。 尝试在上面的代码中也使用它 - ini_set('display_errors', 1); 检查 php.ini 文件。寻找“错误”。它可能已关闭 @sarghau 应该有 display_errors 和 error_reporting 参数。【参考方案4】:

Require once 是一个函数...

尝试添加括号...

 require_once( 'classes/class.test.php' );    

【讨论】:

require_once、require、include_once 和 include 都像 echo - 你不需要 need 括号。 PHP Manual 甚至有没有括号的例子... 问题不在于代码。我在我的机器上运行了代码。有效。服务器出现问题,已由提供商解决。【参考方案5】:

看起来您在 sql 查询中缺少结束 qoute

$query = "INSERT INTO test_table VALUES ('$id','$username',NOW());
mysql_query($query);

应该是

$query = "INSERT INTO test_table VALUES ('$id','$username',NOW())";
mysql_query($query);

【讨论】:

这是一个错字!但这不是问题。如果有语法错误,我使用的IDE会指向。

以上是关于PHP - 在多个页面中需要一次的主要内容,如果未能解决你的问题,请参考以下文章

使用 JQuery、PHP 和 MySQL 为实时统计页面优化多个连续的 ajax 调用

PHP 视频多个页面无法正常工作

如何选择与另一个页面具有相同类别的多个图像

如何在颤动中使用 page_transition 在一次后按中返回多个页面

PHP 在多个页面中使用 SESSION

多个php在一个页面中设置