我只是想制作一个简单的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
答案 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;
}