php - 使用 PHP 常量和函数导航文件目录
问题描述
PHP 版本 5.6.40
目的是通过使用常量和函数来启用索引页面导航以分隔包含在以下子目录文件中的页眉和页脚等文件,以使站点更新更容易。
C:\wamp64\www\games_database\index.php
C:\wamp64\www\games_database\php\all_games.php
C:\wamp64\www\games_database\private\footer.php
header.php functions.php initialise.php
C:\wamp64\www\games_database\css\style.css
预期结果:
C:\wamp64\www\games_database\php\all_games.php
实际结果:
The requested URL /games_databasephp/all_games.php was not found on this server.
使用的代码
索引.php
<?php
require_once('private/initialise.php');
?>
<?php
include_once(PRIVATE_PATH . '/header.php');
?>
<main>
<p></p>
<p></p>
<p></p>
<p></p>
</main>
<?php
include_once(PRIVATE_PATH . '/footer.php');
?>
初始化.php
<?php
define("PRIVATE_PATH", dirname(__FILE__));
define("PROJECT_PATH", dirname(PRIVATE_PATH));
define("PUBLIC_PATH", PROJECT_PATH . 'php');
define("SHARED_PATH", PRIVATE_PATH . 'private');
$public_end = strpos($_SERVER['SCRIPT_NAME'], '/') + 15;
$doc_root = substr($_SERVER['SCRIPT_NAME'], 0, $public_end);
define("WWW_ROOT", $doc_root);
require_once('functions.php');
?>
all_games.php
<?php
require_once('private/initialise.php');
?>
<?php include_once(PRIVATE_PATH . '/header.php');?>
<main>
<table>
<tr>
<td>Game name </td>
<td> </td>
</tr>
<tr>
<td>Platform </td>
<td> </td>
</tr>
<tr>
<td>Type </td>
<td> </td>
</tr>
<tr>
<td>Released </td>
<td> </td>
</tr>
</table>
</main>
<?php include_once(PRIVATE_PATH . '/footer.php');?>
函数.php
<?PHP
function url_for($script_path){
return WWW_ROOT . $script_path;
}
?>
页脚.php
<footer>
<p>© 2019</p>
</footer>
</body>
</html>
头文件.php
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Games Database</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="<?php echo url_for('css/style.css'); ?>" rel="stylesheet"
type="text/css">
</head>
<body>
<header>
<h1>Games Database</h1>
</header>
<nav>
<ul>
<li><a href="<?php echo url_for('index.php'); ?>">Games Database</a></li>
<li><a href="">Login/Register</a></li>
<li><a href="<?php echo url_for('php/all_games.php'); ?>">View All Games</a></li>
</ul>
</nav>
使用的方法 - 为 PHP 常量分配文件路径 - 使用FILE 返回此文件的当前路径 - 使用 dirname() 返回父目录的路径 - 将根 URL 分配给 PHP 常量
我显然不完全理解如何在 PHP 中完全实现常量和函数,我怀疑问题出在 initialise.php 文件上,尤其是这部分代码
$public_end = strpos($_SERVER['SCRIPT_NAME'], '/') + 15;
$doc_root = substr($_SERVER['SCRIPT_NAME'], 0, $public_end);
define("WWW_ROOT", $doc_root);
require_once('functions.php');
解决方案
我发现我需要在 url_for() 中放置一个额外的 /。我也忽略了将 ../ 放在所有链接到目录的开头。我愚蠢地认为,当我设置我的初始化约束和函数时,这将是不需要的。
我谦虚地感谢大家的时间和耐心。
推荐阅读
- amazon-web-services - 如何将标签附加到 AWS 分支
- firebase - 使用 Firebase SDK 对我的 React 应用程序进行 Google 分析
- python - Selenium Web-Driver 找不到元素(Selenium IDE 确实找到了它)
- ruby-on-rails - “.js 不存在于资产管道中”
- php - CakePHP - 使用保存关联保存到两个以上的模型
- java - 在java中,提供参数以扩展参数化接口的接口是它的同义词吗?
- spring - Spring boot Rest 创建一个可以引用另一个类别的类别或不
- c# - 我对订阅重复购买问题有疑问
- c++ - c ++模板化类,带有指向可变函数的函数指针
- c# - 如何将数组传递给 OracleParameter for IN 条件?