持续 php 500 错误

persistent php 500 error

我是 PHP 的新手,我正在尝试 运行 一个简单的 php 脚本。它连接到带有 PHP 5.6 的 LAPP,我设置了一个简单的测试数据库

Peugeot     6666666
Mercedes    57127
Skoda       9000
Volvo       29000
Bentley     350000
Citroen     21000
Hummer      41400
Volkswagen  21600

数据库没有问题。问题是 php 脚本成功连接到数据库但显示持续的 500 错误。

<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
#   $db = pg_connect("sslmode=require host=$host port=5432 dbname=$database user=$user password=$pass");
   if(!$db){
#      echo "Error : Unable to open database\n";
   } else {
#      echo "Opened database successfully\n";
   }

   $sql =<<<EOF
      SELECT * from Cars;
EOF;

   $ret = pg_query($db, $sql);
   if(!$ret){
      echo pg_last_error($db);
      exit;
   } 
#   $myarray = array()
    while($row = pg_fetch_row($ret)){
      $myarray[] = $row;
   }

#   echo json_encode($myarray, JSON_NUMERIC_CHECK);
    echo $myarray
#       echo "Operation done successfully\n";


    pg_close($db);
?>

两条线

error_reporting(E_ALL);
ini_set('display_errors', '1');

以及我的 php.ini 文件中的行

display_errors = On

不要因为恼人的 500 内部错误而有所不同。 逐行手动获取我的代码,我注意到定义数组($myarray = array())以及当我回显它(echo $myarray)时给我错误。唯一的解决方法是使用我想跳过的 json_encode 。 所以我有两个问题。

*为什么我仍然遇到一般性 500 错误?

*为什么定义数组并回显它会崩溃?

您的 echo $myarray 末尾没有 ;。 在使用变量之前声明变量也是一种很好的做法。 因此,在 while 循环中使用它之前使用 $myarray = array();