新手试图弄清楚 PHP [重复]
Posted
技术标签:
【中文标题】新手试图弄清楚 PHP [重复]【英文标题】:Newbie trying to figure out PHP [duplicate] 【发布时间】:2016-10-04 03:18:12 【问题描述】:我只是想制作一个简单的 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
【问题讨论】:
我没有发现您的代码有任何语法错误。所以它应该是一些运行时错误。请通过在代码顶部添加ini_set("display_errors", 1)
来启用display_errors
。
另请参阅此答案以了解如何启用错误:***.com/questions/5438060/… 请告诉我们您遇到的错误是什么。
尝试删除include
中的/
。将其更改为:include "base/startup.php";
@script8man 试试/etc/php.ini
或/etc/php/php.ini
。如果还是找不到:创建一个空的 php 文件(例如名为 info.php
)并在其中写入 <?php phpinfo();
。
这可能是@PraveenKumar 所说的。您试图包含错误的文件(您的系统上可能没有/base
?)。
【参考方案1】:
由于您提到您使用的是 Linux 机器,因此问题似乎是由于此处的 /
引起的。 /
被认为是 linux 机器的根目录。所以删除/
很可能会起作用:
<?php
include "base/startup.php"; // Try removing the slash.
echo "Test";
startPage("Home");
?>
由于您没有启用错误显示,问题是,您的系统中没有/base
,它会引发错误,例如致命:未找到包含文件。 ,由于您的配置,它不会显示,而是会以静默方式显示 Error 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;
【讨论】:
我不知道如何启用错误.. @script8man 您是否先尝试了解决方案?我给了你一个了解如何启用错误的链接。你看到了吗? @script8man 仅供参考:另请参阅此答案以了解如何启用错误:***.com/questions/5438060 请告诉我们您遇到的错误是什么。 我设法打开了错误。我会在编辑中链接它们。 @script8man 完美。等待它。以上是关于新手试图弄清楚 PHP [重复]的主要内容,如果未能解决你的问题,请参考以下文章