新手试图找出PHP

时间:2016-06-03 23:30:08

标签: php

我只是想制作一个简单的PHP程序,让我能够快速生成我的页面。

我是PHP的新手。我不知道我在做什么。

的index.php

<?php
  include "/base/startup.php";
  echo "Test";
  startPage("Home");
 ?>

我收到500服务器错误..请告诉我我做错了什么。谢谢。

/base/startup.php     

$HOME = "/";
$SCRIPT = <<<EOD

EOD;

$IMPORTS = array(
  "/scripts/script.js"
);

$STYLES = array(
  "/styles/style.css"
);

function prnt($string) {
  echo $string;
}

function map($func, $arr) {
  foreach($arr as $i) {
    call_user_func($func, $i);
  }
}

function linkScript($script) {
  prnt("<script src='$script'></script>");
}

function linkStyle($style)  {
  prnt("<link rel='stylesheet' href='$style'/>");
}

function startPage($title, $script="", $imports=array(), $styles=array()) {
  $pre_tags = array(
    "<html>",
    "<head>"
  );
  $post_tags = array(
    "</head>",
    "<body>"
  );
  map(prnt, $pre_tags);
  prnt("<title>$title</title>");
  map(linkScript, $IMPORTS);
  map(linkScript, $imports);
  map(linkStyle, $STYLES);
  map(linkStyle, $styles);
  map(prnt, $post_tags);
}

function genNav() {
  $nav_links = array(
    "Home"=>$HOME,
    "Walkthroughs"=>$HOME . "/walkthroughs/",
    "Dex"=>$HOME . "dex.php"
  );
  prnt("<div class='nav'>");
  foreach ($nav_links as $key => $value) {
    prnt("<a class='link' href='" . $value . "'/>" . $key . "</a>");
  }
}

function endPage() {
  $endTags = array(
    "</body>",
    "</html>"
  );
}

 ?>

这是错误:

Warning: include(/base/startup.php): failed to open stream: No such file or directory in /var/www/html/index.php on line 2

Warning: include(): Failed opening '/base/startup.php' for inclusion (include_path='.:/usr/share/php') in /var/www/html/index.php on line 2
Test
Fatal error: Uncaught Error: Call to undefined function startPage() in /var/www/html/index.php:4 Stack trace: #0 {main} thrown in /var/www/html/index.php on line 4

1 个答案:

答案 0 :(得分:3)

由于您提到您使用的是Linux计算机,因此问题似乎是由/引起的。 /被认为是linux机器的根目录。因此,删除/必须最有效:

<?php
  include "base/startup.php";  // Try removing the slash.
  echo "Test";
  startPage("Home");
?>

由于您尚未启用错误显示,问题是,您的系统中没有/base并且它会抛出错误,例如致命:包括文件未找到。,由于您的配置而未显示,而是会以静默方式显示错误500

<强>更新

除了上面的错误,在看到你的代码后,下一个是你需要引用函数名称。所以用以下内容替换:

map("prnt", $pre_tags);
prnt("<title>$title</title>");
map("linkScript", $IMPORTS);
map("linkScript", $imports);
map("linkStyle", $STYLES);
map("linkStyle", $styles);
map("prnt", $post_tags);

下一个错误是,您还没有在函数内正确包含全局变量。你需要使用:

global $IMPORTS, $STYLES;

现在您的代码按预期工作。

最后完成endPage()功能:

function endPage() {
  $endTags = array(
    "</body>",
    "</html>"
  );
  foreach($endTags as $tag)
    echo $tag;
}