Php 神秘500错误
这可能是一个n00b问题,但我一辈子都搞不清楚我到底在搞什么鬼。我以前也遇到过类似的问题,但我认为我修复它更多的是出于偶然,而不是设计,我真的很想知道我到底做错了什么 如果在pastebin中运行代码,则会出现500错误。但是,如果我注释掉display_wine函数,它运行得非常好。如果我运行调试器,它只会突出显示结束php标记。我检查了一遍又一遍,以确保没有任何附加的括号或分号。任何帮助都将不胜感激Php 神秘500错误,php,Php,这可能是一个n00b问题,但我一辈子都搞不清楚我到底在搞什么鬼。我以前也遇到过类似的问题,但我认为我修复它更多的是出于偶然,而不是设计,我真的很想知道我到底做错了什么 如果在pastebin中运行代码,则会出现500错误。但是,如果我注释掉display_wine函数,它运行得非常好。如果我运行调试器,它只会突出显示结束php标记。我检查了一遍又一遍,以确保没有任何附加的括号或分号。任何帮助都将不胜感激 <?php class simpleCMS { var $host; va
<?php
class simpleCMS {
var $host;
var $username;
var $password;
var $table;
var $id;
public function display_wine_list() {
$q = "SELECT * FROM whino ORDER BY created DESC LIMIT 3";
$r = mysql_query($q);
if ( $r !== false && mysql_num_rows($r) > 0 ) {
while ( $a = mysql_fetch_assoc($r) ) {
$id = $a['id'];
$name = stripslashes($a['name']);
$created = $a['created'];
$type = $a['type'];
/**
$evalt = "require_once '../generator/qrlib.php';";
eval($evalt);
QRcode::png('http://qr.htbx.net/simplecms/mob_display.php?id='.$id, '../generator/temp/'.$id.'.png');
**/
$entry_display .= <<<ENTRY_DISPLAY
<div class="post">
<h2>
$name
</h2>
<p>$created</p>
<p>$type</p>
</div>
ENTRY_DISPLAY;
}
} else {
$entry_display = <<<ENTRY_DISPLAY
<h2> This Page Is Under Construction </h2>
<p>
No entries have been made on this page.
Please check back soon, or click the
link below to add an entry!
</p>
ENTRY_DISPLAY;
}
$entry_display .= <<<ADMIN_OPTION
<p class="admin_link">
<a href="{$_SERVER['PHP_SELF']}?admin=1">Add a New Entry</a>
</p>
ADMIN_OPTION;
return $entry_display;
}
public function display_admin() {
return <<<ADMIN_FORM
<form action="{$_SERVER['PHP_SELF']}" method="post">
<label for="name">Name:</label><br />
<input name="name" id="name" type="text" maxlength="75" />
<div class="clear"></div>
<label for="type">Type:</label><br />
<input name="type" id="type" type="text" maxlength="100" />
<div class="clear"></div>
<label for="notes">Notes:</label><br />
<textarea name="notes" id="notes"></textarea>
<div class="clear"></div>
<input type="submit" value="Create This Entry!" />
</form>
<br />
<a href="display.php">Back to Home</a>
ADMIN_FORM;
}
public function write($p) {
if ( $_POST['name'] )
$name = mysql_real_escape_string($_POST['name']);
if ( $_POST['type'])
$type = mysql_real_escape_string($_POST['type']);
if ( $_POST['grapes'])
$grapes = mysql_real_escape_string($_POST['grapes']);
if ( $_POST['notes'])
$notes = mysql_real_escape_string($_POST['notes']);
if ( $name && $type && $grapes && $notes ) {
$created = date ("Y-m-d H:i:s", $phptime);
$sql = "INSERT INTO whino VALUES('','$name','$type','$grapes', '$notes')";
return mysql_query($sql);
} else {
return false;
}
}
public function connect() {
mysql_connect($this->host,$this->username,$this->password) or die("Could not connect. " . mysql_error());
mysql_select_db($this->table) or die("Could not select database. " . mysql_error());
return $this->buildDB();
}
private function buildDB() {
$sql = <<<MySQL_QUERY
CREATE TABLE IF NOT EXISTS whino (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(75),
notes TEXT,
created DATE,
type VARCHAR(100),
grapes VARCHAR(75)
)
MySQL_QUERY;
return mysql_query($sql);
}
public function display_wine($id) {
$q = "SELECT * FROM whino WHERE id = $id";
$r = mysql_query($q);
if ( $r !== false && mysql_num_rows($r) > 0 ) {
while ( $a = mysql_fetch_assoc($r) ) {
$id = $a['id'];
$name = stripslashes($a['name']);
$created = $a['created'];
$type = $a['type'];
$entry_display .= <<<ENTRY_DISPLAY
<div class="post">
<h2>
$name
</h2>
<p>$created</p>
<p>$type</p>
</div>
ENTRY_DISPLAY;
}
} else {
$entry_display = <<<ENTRY_DISPLAY
<h2> This Page Is Under Construction </h2>
<p>
No entries have been made on this page.
Please check back soon, or click the
link below to add an entry!
</p>
ENTRY_DISPLAY;
}
$entry_display .= <<<ADMIN_OPTION
<p class="admin_link">
<a href="{$_SERVER['PHP_SELF']}?admin=1">Edit</a>
</p>
ADMIN_OPTION;
return $entry_display;
}
}
?>
您的错误
$entry_display .= <<<ADMIN_OPTION
<p class="admin_link">
<a href="{$_SERVER['PHP_SELF']}?admin=1">Edit</a>
</p>
ADMIN_OPTION;
return $entry_display;
你的建议不对
$entry_display .= <<<ADMIN_OPTION
<p class="admin_link">
<a href="{$_SERVER['PHP_SELF']}?admin=1">Edit</a>
</p>
ADMIN_OPTION;
return $entry_display;
问题似乎是您缩进了heredoc分配的结束标签<代码>输入\显示代码>(等)需要一直保留到第1列,而不管代码中发生了什么。问题似乎是您缩进了heredoc分配的结束标签<代码>输入\显示代码>(等)需要一直保留到第1列,而不管代码中发生了什么。我认为这是一个愚蠢的问题,但知道这一点非常有用。谢谢大家!@sh1ps:这不是一个愚蠢的问题(至少不是第一次:-)。从命令行运行时,错误是Parse error:syntax error,第182行test.php中意外出现$end
。嗯,文件中只有181行,所以我马上就知道,关闭报价或其他东西是某种失败。一个像样的语法着色编辑器对于捕捉这些东西是很有用的。我认为这是一个愚蠢的问题,但知道这一点非常有用。谢谢大家!@sh1ps:这不是一个愚蠢的问题(至少不是第一次:-)。从命令行运行时,错误是Parse error:syntax error,第182行test.php中意外出现$end
。嗯,文件中只有181行,所以我马上就知道,关闭报价或其他东西是某种失败。一个像样的语法着色编辑器对于捕捉这类内容非常有用。感谢您花时间解释得这么好。很明显,我并没有真正理解HEREDOC语法,但我想我现在明白了。@sh1ps-没问题。我不时地和埃雷多克打过架,我们都是这样。欢迎来到PHP!谢谢你花时间解释得这么好。很明显,我并没有真正理解HEREDOC语法,但我想我现在明白了。@sh1ps-没问题。我不时地和埃雷多克打过架,我们都是这样。欢迎来到PHP!这段代码除了声明一个类之外什么都不做。您应该检查apache错误日志,以进一步了解所发生的错误。该代码除了声明一个类外,什么都不做。您应该检查apache错误日志,以进一步了解发生的错误。