【问题标题】:How to get DOCUMENT_ROOT to work on both localhost and web host?如何让 DOCUMENT_ROOT 在 localhost 和 web 主机上工作?
【发布时间】:2010-11-02 16:08:06
【问题描述】:

我有一个 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 主机上运行!

谢谢。

【问题讨论】:

    标签: php wordpress simplepie


    【解决方案1】:

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

    这适用于 Wordpress 安装。但对于非 WP 情况,我发现以下 sn-p 很有用:

    $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 文件的情况。

    【讨论】:

    • 这对我不起作用 - 返回的路径包括文件名。我结束了使用这种获取根目录的表单,它比我当前的文件高一个文件夹: if (!$_SERVER['DOCUMENT_ROOT']) $_SERVER['DOCUMENT_ROOT'] = realpath(dirname(FILE) .'/../');
    【解决方案2】:

    看看Determining Plugin and Content DirectoriesWP 已经有这个了。

    【讨论】:

      猜你喜欢
      • 2011-01-19
      • 2011-10-02
      • 1970-01-01
      • 1970-01-01
      • 2021-06-11
      • 2016-03-14
      • 1970-01-01
      • 1970-01-01
      • 2011-11-07
      相关资源
      最近更新 更多