【问题标题】:PHP extension loading from script using dl()使用 dl() 从脚本加载 PHP 扩展
【发布时间】:2011-10-07 15:23:03
【问题描述】:

我打算用 apache/php 5/mysql 购买一个(便宜的)托管空间。因为它很便宜,所以我无法直接控制 php.ini 和扩展加载。

我的问题是:我可以加载将.dll 文件放入我的空间的扩展程序,而不是使用dl() php 函数吗?主机是否可以禁用此功能从而避免以这种方式加载自定义扩展?

【问题讨论】:

  • 如果extension_loaded() 函数按照我在阅读文档时的假设工作,您可以尝试使用dl() 加载扩展,然后使用if (!extension_loaded([EXTENSION])) { echo "Failed to load extension"; exit(); } 检查它是否可用,然后如果没有加载,您将能够阻止您的代码工作。顺便说一句。
  • Gremo,看看alwaysdata.com/plans/shared 他们有一个免费计划,你可以开始,然后如果你需要流量,我相信他们最便宜的计划不会有问题.他们对我非常包容。对于不太灵活但更便宜且非常稳定的服务器,请尝试1and1.com/?affiliate_id=328546

标签: php-5.3 php php-extension


【解决方案1】:

是的,it can be disabled 通过 enable_dlsafe_mode php.ini 设置(几乎可以肯定是这种情况,否则您可以例如在 Web 服务器进程中加载​​自己的代码)。

这是对disable_functions 设置的补充,它可以禁用任何东西

【讨论】:

  • 你可以禁用任何东西并不完全正确,例如你不能禁用eval,很遗憾,因为它是 PHP 最糟糕和危险的特性之一。这是因为eval 是一种语言结构,而不是一个函数。
【解决方案2】:

主机可以通过 php.ini 禁用 php 中的任何功能。事实上,如果主持人保留此功能,我会感到惊讶。

【讨论】:

    【解决方案3】:

    由于您谈论的是 .dll,因此您假设要获得一个运行 PHP 的 Windows 托管服务器,但是最好与托管公司核实,因为可能会禁用 dl()。

    较小的托管公司可能更愿意添加您可能需要的扩展。

    【讨论】:

      猜你喜欢
      • 2012-05-29
      • 2011-07-19
      • 1970-01-01
      • 2012-11-26
      • 2018-07-04
      • 2013-11-24
      • 1970-01-01
      • 2014-08-28
      • 2015-04-21
      相关资源
      最近更新 更多