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 调用