当前位置: 首页 > 面试题库 >

如何放松PHP的open_basedir限制?

澹台文博
2023-03-14
问题内容

open_basedir限制了目录树中PHP可以打开的文件。

我在Web根目录之外存储了几个类库和配置文件。这样,Web服务器不会使它们公开访问。但是,当我尝试从应用程序中包含它们时,出现如下所示的open_basedir限制错误:

警告:realpath()[function.realpath]:open_basedir限制有效。文件(/var/www/vhosts/domain.tld/zend/application)不在允许的路径内:/
var / www /中的(/var/www/vhosts/domain.tld/httpdocs:/tmp)第5行的vhosts /
domain.tld / httpdocs / index.php

我的网络根目录在这里:

/var/www/vhosts/domain.tld/httpdocs

我的库和配置目录在这里:

/var/www/vhosts/domain.tld/zend

放松open_basedir限制以使域文件夹下的目录树可用于我的应用程序的最佳解决方法是什么?我有很多要使用的域,而且我显然也对创建安全漏洞保持警惕。

注意:我正在使用CentOS,Apache,Plesk,并且我具有对服务器的root ssh访问权限。尽管这并不直接适用于Zend
Framework,但我在此实例中正在使用它。因此,这是Zend引导程序中包含的内容:

define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../zend/application/'));
set_include_path(APPLICATION_PATH . '/../zend/library' . PATH_SEPARATOR . get_include_path());

问题答案:

您还可以使用Apache(假设这是您的Web服务器)配置文件(例如httpd.conf)在每个目录的基础上轻松完成此操作。

<Directory /var/www/vhosts/domain.tld/httpdocs>
php_admin_value open_basedir "/var/www/vhosts/domain.tld/httpdocs:/var/www/vhosts/domain.tld/zend"
</Directory>

您也可以完全删除限制

<Directory /var/www/vhosts/domain.tld/httpdocs>
php_admin_value open_basedir none
</Directory>


 类似资料:
  • 问题内容: 我面临的问题是我正在尝试返回一个对象列表(带有注释),但出现了500个服务器错误代码: 服务器遇到内部错误(找不到媒体类型:application / json的类型为java.util.ArrayList的响应对象的MessageBodyWriter),导致该服务器无法满足此请求。 您能否提供一些建议以解决此问题? 我不确定确切的位置。 谢谢。 问题答案: 您应该使用interfac

  • 问题内容: 我在网站上的头像上传中遇到此错误。我从来没有得到过它,最近没有任何改变让我开始收到此错误… 问题答案: 修改PHP配置中的设置(请参阅 运行时配置)。 该设置主要用于防止特定用户的PHP脚本访问另一个用户帐户中的文件。因此,通常,您自己的帐户中的任何文件都应该可以被您自己的脚本读取。 通过PHP在Linux系统上是否作为Apache模块运行的示例设置:

  • 问题内容: 是否有任何适用于PHP的工具可用于基于WSDL生成使用Web服务的代码?相当于单击Visual Studio或Eclipse插件中的“添加Web引用”,这对于Java具有相同的作用。 问题答案: wsdl2php取得了很大的成功。它将自动为Web服务中使用的所有对象和方法创建包装器类。

  • 问题内容: 我已经尝试过(但无法正常工作): 问题答案: 尝试这个: 当您遇到此类问题时,一个好主意是检查浏览器是否存在JavaScript错误。不同的浏览器有不同的显示方式,但是需要一个javascript控制台或类似的东西。另外,检查浏览器查看的页面源。 有时,初学者对字符串中的引号感到困惑:在PHP部分中,您分配给。这将字符串值放入该变量内,但该值中没有引号:它们仅用于解释器,因此他知道:

  • iOS 6和Xcode 4.5有一项新功能,称为“Unwind Segue”: 展开分段可以允许转换到故事板中的现有场景实例 除了Xcode 4.5发行说明中的这一简短条目外,UIViewController现在似乎有两个新方法: 展开段如何工作以及它们可以用于什么?

  • 问题内容: 我正在使用SQL Server2008。我试图修改表。但是它不允许更新。 如何在SQL Server 2008中赋予UPDATE权限? 问题答案: 退房: 授予和删除SQL Server中的权限 或任何其他不错的SQL Server网站,或者只是google!那里有大量的网站和书籍,将向您详细介绍如何执行此操作。 基本上,拥有必要权限的人需要执行 就是这样。当然,您可能还需要SELEC