【问题标题】:Wordpress - Apache FollowSymlinks for themes, using Mac lionWordpress - Apache FollowSymlinks 主题,使用 Mac lion
【发布时间】:2012-02-16 07:47:01
【问题描述】:

我已经在我的 Mac (lion) 上本地安装了 wordpress 启用虚拟主机后,我在主机文件中创建了一个条目,将“wordpress”指向 127.0.0.1

我的 vhosts.conf 包含:

<VirtualHost *:80>
    DocumentRoot "/Users/alex/Sites/wordpress"
    ServerName wordpress
    <Directory />
            Options FollowSymLinks  
            AllowOverride None
    </Directory>
</VirtualHost>

这行得通,我可以访问默认的 wordpress 安装,没问题。

基本上,在我的 wp-content/themes 文件夹中,我放置了一个符号链接(例如)
/Users/Alex/Projects/SomeTheme/

此文件夹包含我的主题文件

但是,它只是没有检测到主题(不会显示在 WP 管理中)
如果我将文件夹复制到 wp-content/themes,那么它可以工作。未遵循符号链接

在我的 /etc/apache2/users/alex.conf 我有:

<Directory "/Users/alex/Sites/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

我显然在某处遗漏了一些东西......

【问题讨论】:

  • 我认为 servervault 的人可能会提供帮助..
  • 是的..我想我在错误的网站上发布了这个..可以移动吗?

标签: mysql apache wordpress symlink


【解决方案1】:

Wordpress 在使用符号链接时存在问题。这是由于 PHP 如何处理 __FILE__ 魔术常数。在 PHP 中,__FILE__ 返回运行它的文件的绝对路径。不幸的是,它忽略了该过程中的符号链接。 (即,虽然您可能正在通过/opt/wordpress/instance/wp-content/sym-themes/pretty 访问文件并且该文件实际上位于/opt/content/themes/pretty 中,但当调用__FILE__ 时,它不会返回wordpress 所期望的/opt/wordpress/instance/wp-content/sym-themes/pretty,而是返回/opt/content/themes/pretty

Wordpress 在其代码中大量使用__FILE__ 以及basename() 函数将wordpress 根目录与主题目录进行比较,以获取主题目录的名称,例如解析文件。由于 PHP 如何处理 __FILE__ 魔法常数,Wordpress 尝试匹配路径,但由于它们是两个不同的路径,它只是将一个路径附加到另一个路径,最终得到一个不存在的路径。

除非您打算进行大量代码修改,否则我强烈建议您不要在 wordpress 结构中的任何地方使用符号链接。

【讨论】:

    【解决方案2】:

    正如@Drahkar 所指出的,符号链接在 WordPress 中很困难。要更改主题目录,请使用一个简单的插件:

    add_filter( 'theme_root', 'sp8963532_theme_root' );
    function sp8963532_theme_root()
    {
        return 'FULL_LOCAL_PATH_TO_YOUR_THEMES_DIRECTORY';
    }
    
    add_filter( 'theme_root_uri', 'sp8963532_theme_root_uri' );
    function sp8963532_theme_root_uri()
    {
        return 'URI_TO_YOUR_THEMES_DIRECTORY';
    }
    

    将代码复制到文件中,并将文件放入wp-content/mu-plugins/

    【讨论】:

    • 这不会解决缓存等问题。老实说,最好不要在 Wordpress 中使用符号链接。
    • 此解决方案是符号链接的替代方案。缓存在这里不是问题。见this answer for 类似情况。
    猜你喜欢
    • 2012-12-26
    • 2012-03-31
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    • 2013-12-06
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多