新手试图弄清楚 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)并在其中写入 &lt;?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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

PHP + SQL 登录系统。返回错误的值[重复]

获取 HTML 标记之间的文本 [重复]

试图弄清楚如何使用字符退出 System.exit

试图弄清楚为什么我的rails应用程序在heroku中崩溃了?

新手错误:外部表不是预期的格式[重复]

无法弄清楚反应应用程序中js和jsx之间的区别[重复]