Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 神秘500错误_Php - Fatal编程技术网

Php 神秘500错误

Php 神秘500错误,php,Php,这可能是一个n00b问题,但我一辈子都搞不清楚我到底在搞什么鬼。我以前也遇到过类似的问题,但我认为我修复它更多的是出于偶然,而不是设计,我真的很想知道我到底做错了什么 如果在pastebin中运行代码,则会出现500错误。但是,如果我注释掉display_wine函数,它运行得非常好。如果我运行调试器,它只会突出显示结束php标记。我检查了一遍又一遍,以确保没有任何附加的括号或分号。任何帮助都将不胜感激 <?php class simpleCMS { var $host; va

这可能是一个n00b问题,但我一辈子都搞不清楚我到底在搞什么鬼。我以前也遇到过类似的问题,但我认为我修复它更多的是出于偶然,而不是设计,我真的很想知道我到底做错了什么

如果在pastebin中运行代码,则会出现500错误。但是,如果我注释掉display_wine函数,它运行得非常好。如果我运行调试器,它只会突出显示结束php标记。我检查了一遍又一遍,以确保没有任何附加的括号或分号。任何帮助都将不胜感激

<?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错误日志,以进一步了解发生的错误。