php - 如何让 DOCUMENT_ROOT 在本地主机和网络主机上工作?

标签 php wordpress simplepie

我有一个 WordPress 插件,我想在本地主机上运行以及在不进行修改的情况下进行部署,但我似乎无法使用一条语句设置目录的位置。

我想这样做:

$feed->set_cache_location($_SERVER['DOCUMENT_ROOT'] . '/wp-content/cache');

虽然这适用于网络主机。在本地主机上它会产生以下错误:

C:/xampp/htdocs/wp-content/cache/a547b8792c3144c98549be23ef1465e7.spc is not writeable

在本地主机上,我需要将其设置为此才能使其工作:

$feed->set_cache_location($_SERVER['DOCUMENT_ROOT'] . '/mysite/wp-content/cache');

肯定有一些东西可以同时在本地主机和网络主机上运行!

谢谢。

最佳答案

所以看起来 OP 会对 WP_CONTENT_DIR 或 WP_PLUGIN_DIR 预定义常量感兴趣。

这适用于 WordPress 安装。但对于非 WP 情况,我发现以下代码片段很有用:

$docroot = realpath((getenv('DOCUMENT_ROOT') && ereg('^'.preg_quote(realpath(getenv('DOCUMENT_ROOT'))), realpath(__FILE__))) ? getenv('DOCUMENT_ROOT') : str_replace(dirname(@$_SERVER['PHP_SELF']), '', str_replace(DIRECTORY_SEPARATOR, '/', dirname(__FILE__))));

这是在类似的情况下,我希望在本地主机/开发环境和服务器环境上都能工作,其中文档根位置不同。但更重要的是,这适用于我需要独立运行 PHP 文件的情况。

更新

上述代码已于 2022 年 2 月进行编辑,以改进和删除已弃用和删除的功能,例如 ereg:

$docroot = realpath((getenv('DOCUMENT_ROOT') && 
preg_match('^'.preg_quote(realpath(getenv('DOCUMENT_ROOT')),'/').'^', 
realpath(__FILE__))) ? getenv('DOCUMENT_ROOT') : 
str_replace(dirname(@$_SERVER['PHP_SELF']), '', 
str_replace(DIRECTORY_SEPARATOR, '/', __DIR__)));

关于php - 如何让 DOCUMENT_ROOT 在本地主机和网络主机上工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/990133/

相关文章:

php - 如何使用 commit() 查找记录插入到 mysql

html - 需要在主页上识别元素 - Wordpress

php - 仅当存在元值 #2 和元键 #2 时,为元键 #1 设置元值 #1

php - 使用 Bootstrap 为 `wp list` 类别设置样式

php - 尝试扩展类(class)时出现奇怪的警告

php - PDO fetchAll 非对象

php - 在 Yii 中使用 TinyMCE 与 JQuery 冲突

php - 从 PHP 调用 sphinx 索引器

wordpress - RSS WordPress SimplePie 声称有效 URL 无效

php - simplexml_load_file 与第三方 RSS 解析库。(PHP)