【问题标题】:requiring using /var/www works but using localhost doesnt work要求使用 /var/www 有效,但使用 localhost 无效
【发布时间】:2016-02-11 10:08:28
【问题描述】:

我是在 linux 环境下工作的新手,我也在 linux 上开发一个 php 项目。我在需要 php 文件时遇到了问题。我有两个名为 test.php 和 database.php 的 php 文件。这两个文件都在 /var/www/TEST/ 中。

这是database.php中的代码

<?php echo("You have included the database"); ?>

这是test.php中的代码

<?php require("/var/www/TEST/database.php");?>

然后,当我使用 firefox 浏览 test.php 时,我得到预期的输出“您已包含数据库”。但是当我将 test.php 更改为

<?php require("localhost/TEST/database.php"); ?>

当我浏览到 test.php 时,我没有输出。我已经启动了 apache 服务并将 /var/www/ 的文件访问权限更改为 755。希望您能帮助我了解为什么我会得到这种结果。谢谢。

【问题讨论】:

  • 你应该简单地使用require('database.php');
  • 尝试在本地主机前添加http://
  • 我认为您混淆了 URL 和路径是什么。这是两个不同的概念(您可以将域更改为 example.com 但保持相同的路径)。我相信您可以找到有关这些事情的详细信息。我前段时间就类似问题给出的答案可以在这里找到:stackoverflow.com/a/10913412/521598
  • @sagarGuhe 我知道它可以使用你的方式工作,但是因为我想创建对 database.php 其他文件的静态引用,所以我想通过本地主机或我的 IP 地址访问它计算机(我希望它也可以从其他计算机访问)。

标签: php linux


【解决方案1】:

首先您应该启用错误报告:

<?php 
// Put these lines to the top of your script
error_reporting(E_ALL);
ini_set('display_errors', true);
ini_set('display_startup_errors', true);
ini_set('xmlrpc_errors', true);

然后您尝试通过 HTTP 流包含文件,但您在 localhost 之前忘记了 http://https:// 并且包含通过流被禁用以确保安全原因。 配置为allow_url_include。默认情况下它处于关闭状态,您应该将其关闭。

尝试进入 composer / psr classmaps / psr 自动加载。这是一种“行业标准”机制。你应该这样做。

【讨论】:

  • 感谢您的解释。
【解决方案2】:

要使其成为静态引用,您可以编写如下代码:

require($_SERVER['DOCUMENT_ROOT'] . '/TEST/database.php'); // $_SERVER['DOCUMENT_ROOT'] gets you '/var/www' or whatever your server root maybe

【讨论】:

    【解决方案3】:
    <?php require("database.php");?>
    
    <?php require("database.php"); ?>
    

    在一个文件夹中工作时无需要求完整路径

    【讨论】:

      猜你喜欢
      • 2014-03-16
      • 2016-04-06
      • 1970-01-01
      • 2021-12-04
      • 2019-08-26
      • 1970-01-01
      • 2021-11-02
      • 2016-08-11
      • 1970-01-01
      相关资源
      最近更新 更多