【问题标题】:Using the include function in PHP在 PHP 中使用包含函数
【发布时间】:2018-09-12 20:24:19
【问题描述】:

所以,我正在开发一种电子商务风格的网站,并且我拥有一个主机/域。据我了解,我应该将我的 PHP 文件放在 public_html 以外的另一个位置(出于安全目的),index.html 的位置在 /home/user/public_html 中。我想把我的 PHP 文件放在 php 文件夹中。我试过使用:

include("home/user/php/file.php") 要么 include("../php/file.php").

我已经在 ini 文件中启用了这些命令的使用,并且我还尝试设置文件夹的权限(读/写/执行)。正在工作的一件事是设置一个带有“根”文件夹的子域php 文件夹,但我想这违背了将文件放在服务器上其他位置的目的,特别是因为我使用一个对象来放置我的 php,如下所示:

<object class="php-script" data="database.php"></object>

在我的java脚本下我放了:

<?php
    include("/home/user/php/database.php");
?>

提前感谢您帮助我。

【问题讨论】:

  • 当你这样做时会发生什么?你有错误吗?
  • 如果我尝试制作一个发送电子邮件的脚本,当我点击“发送”时,它说它找不到文件(即发送电子邮件的脚本)。
  • “它说”就像您收到错误消息一样?你能分享一下确切的措辞吗?
  • 当我点击“发送”时,它会继续,它会将我重定向到一个带有“找不到 URL”的白页。类似于 php 错误信息
  • 这可能与包含无关。听起来您的 &lt;form&gt; 标记带有无效的 action 值。

标签: php html web


【解决方案1】:

通常使用带有includerequire 的相对路径意味着使用从URL 调用的第一个调用脚本所在的目录开始的相对路径。

例子:

application
    src
        database.php
        somescript.php
    public (document root)
        index.php
        news.php

http://example.com/index.php

public/index.php

<?php
include '../src/database.php'

这应该很容易理解。

http://example.com/news.php

public/news.php

<?php
include '../src/somescript.php';

src/somescript.php

<?php
include '../src/database.php';

所以请注意 somescript.php 中的包含。它在src 文件夹中并不重要。像 include 'database.php' 这样的包含将失败,因为重要的是 news.php 的路径。


编辑 (2018-04-04)

我忘了提。考虑使用require() / require_once() 而不是include() / include_once()

Difference between require, include, require_once and include_once?

【讨论】:

  • 所以我应该创建另一个包含所有包含的文件,当我想访问其中一个文件时,我只是直接使用“somescript.php”?
  • @TakeDown 不。我想告诉你,包含一个包含文件的文件不会改变你必须使用的相对路径。你总是从第一个 PHP 脚本开始“路径”。
  • 成功了,非常感谢您的快速回复。不过,这只是一个简单的问题。要在新闻文件中使用包含函数,我需要它是一个 php 文件。这又不是一个安全漏洞吗?还是因为它只有包含函数和对象标签(在我的例子中)?
  • @TakeDown 考虑我的最新编辑...并在您的最新评论中回答您的问题。至少我们的脚本应该有一个扩展名,该扩展名必须由服务器配置注册才能使用 PHP 执行和解析。如果不是,文件将按原样响应 - 这可能导致安全漏洞,例如。 G。如果您有敏感数据,例如登录数据。默认情况下,这些注册的扩展名是phpphtmlhtmhtml。实际 PHP 执行脚本所需/包含的所有脚本也都用 PHP 解析。
【解决方案2】:

试试下面的代码。看看它输出什么。基本上你需要使用: $_SERVER['DOCUMENT_ROOT'] 导航到文件而不是自己输入路径。

//to get site url 
echo $site_url = "http://" . $_SERVER['SERVER_NAME'] . dirname($_SERVER['PHP_SELF']); 

//to the folder
echo $dir = $_SERVER['DOCUMENT_ROOT'].'/user/php/';

if (file_exists($dir) == false) {
echo  "Directory $dir not found!";
} else {
echo "directory found and we are ready to proceed.";
}

让我知道你的回应,我会进一步帮助你。

【讨论】:

  • 我强烈不建议这样做,因为使用 PHP_SELF 是一个已知的安全问题:第一,您不会考虑脚本可能不在文档根目录中,第二导致发布$site_url 中的内部和通常省略的服务器路径。
  • 请将“gifogrup”替换为用户。起初我不想给出那个,因为它是一个令人困惑的名字。这就是我得到的。”gifogrup.ro//home/gifogrup/public_html/gifogrup/php/Directory /home/gifogrup/public_html/gifogrup/php/ 未找到!”
  • @codekandis 好的,感谢您向我指出这一点。你每天都会学到新东西
猜你喜欢
  • 2013-06-12
  • 2013-05-17
  • 2013-04-17
  • 1970-01-01
  • 2015-02-03
  • 2011-09-18
  • 1970-01-01
  • 2018-01-06
  • 2010-10-16
相关资源
最近更新 更多