我正在使用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>
process.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会抛出错误“找不到类测试”。
过去两周我一直在努力解决这个问题。 :(之前工作正常。我不明白出了什么问题。请帮忙。
答案 0 :(得分:5)
您在process.php的PHP代码中有错误;你错过了一个分号:
require_once 'classes/class.test.php'
应该是:
require_once 'classes/class.test.php';
如果这不能解决问题,那么代码中可能存在其他错误。如果无法访问完整的源代码,我们将无法做很多事情。
为了将来参考,如果页面变为空白,则PHP源代码通常存在问题(即某种类型的解释错误)。作为良好调试策略的一部分,请查看display_errors和error_reporting
答案 1 :(得分:3)
尝试
使用error_reporting(E_ALL);
答案 2 :(得分:1)
听起来您的错误报告已关闭。您应该检查错误日志,看看当它以静默方式失败时抛出的异常(这将为您提供更多的洞察力)。
此外,您可能希望在流程脚本的顶部添加它:
error_reporting(E_ALL);
答案 3 :(得分:0)
要求曾经是一个功能...
尝试添加parens ......
require_once( 'classes/class.test.php' );
答案 4 :(得分:0)
看起来你错过了sql查询的结束语
$query = "INSERT INTO test_table VALUES ('$id','$username',NOW());
mysql_query($query);
应该是
$query = "INSERT INTO test_table VALUES ('$id','$username',NOW())";
mysql_query($query);