2

我有一个 WordPress 插件,我想在不修改的情况下在 localhost 和部署中工作,但我似乎无法使用一个语句设置目录的位置。

我想这样做:

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

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

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

在 localhost 上,我需要将其设置为此才能正常工作:

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

当然,必须有一些东西可以在 localhost 和 web 主机上运行!

谢谢。

4

2 回答 2

4

所以看起来 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__))));

这是在类似的情况下,我希望事情可以在 localhost/dev 环境和服务器环境上工作,其中 docroot 位置不同。但更重要的是,这适用于我需要独立运行 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__)));
于 2011-05-20T16:50:09.977 回答
2

看看这个确定插件和内容目录WP 已经有了这个。

于 2009-06-13T06:51:26.120 回答