【发布时间】:2021-12-18 17:03:30
【问题描述】:
嗨,
我从 PHP 开始,然后创建我的网站。我创建了一个页眉和页脚组件以在每个页面上打印:require '/assets/components/header.php'; 和 require '/assets/components/footer.php';
所以,问题是在本地主机上,它工作,但在网站上,它没有工作,我有一个 http 错误 500
剧目: Folder tree
我试试:
1.不同类型的链接
require 'assets/components/header.php';
require './assets/components/header.php';
require '../assets/components/header.php';
2. 创建一个变量 $BASE_URL 来存储网站的 url 并要求如下:require "$BASE_URL/assets/components/header.php";。我将设置“allow_url_include”设置为 true,但出现此错误:
[04-Nov-2021 12:28:40 UTC] PHP Warning: require(http://#####/assets/components/header.php): Failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error
'#####' -> 我的网站
我读到一个主题,将 'allow_url_include' 设置为 true 并不安全,所以如果我们可以做不同的话。
Header.php
<?php
require_once "$BASE_URL"."assets/function.php";
if(!isset($title)){
$title='Error 404 - Catif';
}
if(!isset($page)){
$page='error';
}
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href='/assets/css/style.css'>
<title><?= $title ?></title>
</head>
<body>
<nav>
<div class="nav-left"><p class="nav-name">Catif</p></div>
<div class="nav-right">
<a class="nav-item <?php if($page === 'home'): ?>active<?php endif ?>" href="/index.php">Projets</a>
<a class="nav-item ml-80 <?php if($page === 'me'): ?>active<?php endif ?>" href="views/me.php">Moi</a>
<a class="nav-item ml-80 <?php if($page === 'contact'): ?>active<?php endif ?>" href="/views/contact.php">Contact</a>
</div>
<button class="nav-button">==</button>
</nav>
<div class="container">
【问题讨论】:
-
分享header.php文件内容
-
require 适用于路径,而不是 url
-
不要将 BASE_URL 与必需/包含的文件一起使用。请改用
__DIR__或$_SERVER['DOCUMENT_ROOT']之类的东西。 -
将 URL 传递给
require是没有意义的。传递您的文件在服务器磁盘上的路径。 -
A 500 错误是一种通用错误消息,几乎涵盖了 PHP 脚本可能出错的每一件事。检查您的服务器错误日志以找出确切的错误消息。