我刚刚完成了项目中的一些事情,所以我决定将它发布到我们在学校的服务器上。但是,每当我尝试运行任何东西时,它都没有显示任何内容。这是我在index.php中使用的一些代码:
<?php require '/root.php'; ?>
在我的root.php中,我指定了要应用于服务器上所有页面的所有内容,例如:
<?php
$root_php = (realpath(dirname(__FILE__)));
?>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
<?php
$db_connection = mysqli_connect("localhost", "username", "password", "db_main");
?>
上面的行工作正常,但问题在于:当我尝试使用正斜杠包含任何脚本时#34; /&#34;在开始时确保路径&#34;开始&#34;在路径上&#34; root.php&#34;脚本被执行,脚本断开只返回简单的未完成的HTML页面。当我尝试查看源代码时,它总是看起来像这样:
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
打破它的代码看起来像这样:
require_once '/account/login_verify.php';
(开头有斜线,我需要在那里确保脚本不会尝试在其他地方找到它)
我还尝试了另外一个托管PHP&amp; MySQL支持,但它返回(几乎)相同的结果:
<!doctype html>
<html>
<head>
它既不适用于开头的斜杠,也不适用$root_php
变量来设置脚本的整个路径。
Apache / PHP配置有问题吗?如果没有,为什么代码在虚拟服务器上完全可用,而在物理服务器上什么都不做?任何想尝试的想法都非常感谢。顺便说一句,我无法访问我们学校的重新配置服务器,但如果我告诉他应该改变什么,我们的一位老师已经可以重新配置它。
提前致谢!
答案 0 :(得分:0)
尽管不通过某种外部配置设置拉入路径,但请尽量不要包含/要求具有绝对路径的文件。
绝对路径会因您安装应用的系统而异。因此,您最好的选择是从已知的入口点开始到文件系统(例如,当前文件的位置),并从那里开始相对处理。
这样,无论文件系统位于何处,您的代码都可以跨系统移植。
如果root.php与当前文件位于同一目录中,请尝试<?php require 'root.php'; ?>
而不是<?php require realpath(__DIR__ . '/../../root.php'); ?>
。如果没有,你可以相对地解决它,如下:
new Vue({
el: '#app',
data: {
numberWatched: 1,
numberAfter: 1
},
watch: {
numberWatched: (val) => {
this.numberAfter = this.numberWatched * 4;
}
}
})
(调整文件系统布局的实际路径)
如果您希望了解现代PHP应用程序如何处理目录布局和代码包含,请查看PSR4标准及其使用方法: