【发布时间】:2023-03-08 15:35:01
【问题描述】:
我一直在 .htaccess 文件中使用 setEnv,但是 webhost 最近将服务器更新到 PHP 5.4,从那时起我的网站由于使用 setEnv 而崩溃。他们告诉我该函数在 PHP 5.4 中已被弃用,但我没有在任何地方看到此文档。
谁能指导我另一种定义环境变量的方法,该方法可用于在不更改路径的情况下检索所有页面上的包含文件。
我一直在使用这样的东西:
// in .htaccess file
SetEnv INC_FILE path\include.php
// in every relevant .php file
require_once(getenv('INC_FILE'));
由于有了这段代码,可以很容易地在不同的开发、测试、生产环境中移动文件 - 无需更改任何文件内容。这也是目的。
您可以推荐哪些替代方案,因为我无法使用此功能。 也欢迎使用其他方法来完成类似任务。
谢谢。
【问题讨论】:
-
定义“崩溃”?错误日志说什么?无论如何,
getenv在 PHP 5.4 中运行良好,而不是 deprecated。您的示例在我的本地测试环境中使用 Apache 2.4.3 和 PHP 5.4.14/18 对我来说效果很好。也许他们需要更新 Apache 和/或 mod_env。 -
内部服务器错误 500 是错误。我在任何地方都看不到它应该被弃用。
-
但是 setEnv 可能是一个 Apache 函数——我猜。由于 Apache 更新,它是否已被弃用?我也没有在任何地方看到这个。
-
Apache 错误日志应该为您提供有关该问题的更多详细信息。如果您无法直接访问这些日志文件,请询问您的托管商。
SetEnv由mod_env模块提供。因此,如果那个单曲引起了问题,那么mod_env中可能有一个错误,或者它已经过时,不再与使用的 Apache 版本兼容,或者它可能被禁用/删除等等......这几乎是不可能的至少在没有看到 Apache 错误日志的情况下告诉我们。 -
我的虚拟主机告诉我他们无法激活该模块 - 这意味着我必须找到替代解决方案。任何人都可以提出解决方案,例如用PHP或其他解决方案编码(可以通过在php.ini中设置环境变量来解决)?
标签: php apache .htaccess environment-variables