【发布时间】:2017-03-27 17:09:48
【问题描述】:
我镜像了一个网站,并且能够通过使用路径中的替换技术将 PHP 包含添加到所有 PHP 文件中。同一目录中的所有 PHP 文件都会在图像中生成以下内容:
按预期工作,我能够与导航样式进行交互。但是,如果我导航到与 PHP 包含不在同一父文件夹中的文件(reports/index.php),则会收到以下错误:
Warning: include(navigation.php): failed to open stream: No such file or directory in F:\xampp\htdocs\xampp\navigations\1\reports\index.php on line 148
Warning: include(): Failed opening 'navigation.php' for inclusion (include_path='F:\xampp\php\PEAR') in F:\xampp\htdocs\xampp\navigations\1\reports\index.php on line 148
不确定是否有一种高效的方式可以重构所有 PHP 包含的内容,而无需手动修复每个页面?我基本上是想改变这个:
<?php include("navigation.php"); ?>
如果说我在报告目录中:
<?php include("../navigation.php"); ?>
是否有任何编辑器或 IDE 可以做到这一点?我目前正在使用 PhpStorm。
【问题讨论】:
-
您可以将根路径存储到索引文件最顶部(或包含在顶部的 config.php 中)的已定义常量
define('ROOT_PATH','full/root/path');。然后,索引文件中包含的每个子脚本都可以包含类似include(ROOT_PATH."/navigation.php");或include(ROOT_PATH."/reports/navigation.php");的文件 -
这是
navigation.php文件的根路径吗?我会将定义的常量应用于所有页面吗? -
假设你有一个 index.php。应用程序的起点。在第一行您可以添加
define('ROOT_PATH','full/root/path');这应该与您从echo $_SERVER['DOCUMENT_ROOT'];获得的路径相同。您可以在包含的子文件(例如“report/navigation.php”)中的任何地方使用定义的 ROOT_PATH 常量,只要您将它们包含在 index.php 中的 define() 下方。如果您仍然不清楚,我可以尝试重构您拥有的内容,前提是您有充分的理由要在特定任务目录(例如 /report/index.php 中拆分索引文件) -
搞定了!好吧,我在报告索引 PHP 文件中对其进行了测试,它显示了 HTML,但没有显示 CSS 和 JavaScript,因为它们的路径认为它们在报告目录中。这是我的结构: index.php(主页)|报告(文件夹)| --- index.php(报告页面)| assets(文件夹)(包含我实现的导航的 CSS 和 JavaScript)| navigation.php(导航样式) |不知道我该如何解决这个问题?我可以将它们定向到我的远程服务器,但我必须上传任何 CSS 和 JavaScript 才能看到更改。
-
@userrandomuser 使用 css 和 js 文件的一个简单方法是让路径全部相对于
/。好的想法/是相对于您的此类文件的 webroot 的,因此您可以在每个页面中执行/css/main.css,它将指向同一个文件。
标签: php