【发布时间】:2023-03-21 20:06:01
【问题描述】:
我看到“虚拟目录支持”在 phpinfo.php 中被禁用,我该如何启用它?
【问题讨论】:
标签: php virtual-directory
我看到“虚拟目录支持”在 phpinfo.php 中被禁用,我该如何启用它?
【问题讨论】:
标签: php virtual-directory
简而言之:你不能轻易做到。而且你不应该。
更长的故事:PHP 应该提供一个无共享的环境。在这种情况下,这意味着如果两个脚本并行运行,它们不应相互干扰。在大多数情况下,这不是问题,因为不同的脚本使用不同的进程。 (带有 mod_prefork、FastCGI、fpm 等的 Apache 模块)
但在某些情况下,人们在线程环境中使用 PHP 作为模块。 (Microsoft IIS 模块、Apache mod_mpm 模块等)如果是这种情况,PHP 不能依赖操作系统来分离上下文,而是必须自己做。
一个相关区域是当前工作目录。您提到的选项与此有关,并且名称具有误导性:它不是“虚拟目录支持”而是“虚拟当前工作目录支持”。它是文件系统操作的抽象。
因此,当在不同的线程和代码(如include "./foo.php";)中有两个 PHP 请求时,您希望它与请求的主脚本相关,而不是环境的全局状态。 VCWD 支持做到了这一点。因为它只与线程环境相关,所以启用/禁用与 PHP 是否构建线程安全的设置绑定,这是在编译时完成的。除非您需要,否则此功能已关闭。
作为用户,您不应该关心它 - 它与使用流或 PHP 脚本中的东西的能力无关。
【讨论】:
--enable-maintainer-zts 虽然它启用了VCWD,但它主要做一些不同的事情并间接启用VCWD)第一段是对字面问题的正确答案。 “你不能轻易”其他一些组件会在需要时“”
使用--enable-maintainer-zts 编译应该可以。
但请确保您知道它的作用,here is an explanation。
【讨论】: