多站点网络端口号问题?

时间:2015-12-27 作者:raxa

我正在跟踪This tutorial 创建WordPress网站网络。添加后

/* Multisite */
define( \'WP_ALLOW_MULTISITE\', true ); 
给我的wp-config.php 文件,当我开始配置多站点网络时,出现了此错误

ERROR: You cannot install a network of sites with your server address.
You cannot use port numbers such as :8080
我试图改变

 Listen 0.0.0.0:8080
Listen [::0]:8080  

 Listen 0.0.0.0:80
Listen [::0]:80
发件人httpd.conf 但是由于这个wamp服务器仍然是橙色的。如何解决这个问题。我是WordPress的新手,非常感谢您的帮助。

2 个回复
最合适的回答,由SO网友:birgire 整理而成

Warning: This is just a test for dev installs and not production sites

我很好奇,对于那些想在dev安装上开发多站点,但在不同端口上:80:443, e、 g。:8080.

我只找到了这个blog post 亨利·贝诺特著。在这里,他举例说明了如何修改3.9.1核心,以绕过核心限制。

这里有一个必须使用的插件/wp-content/mu-plugins/wpse-ms-on-different-port.php 我们试图避免核心修改的地方:

<?php 
/**
 * Test for multisite support on a different port than :80 and :443 (e.g. :8080)
 *
 * Here we assume that the \'siteurl\' and \'home\' options contain the :8080 port
 *
 * WARNING: Not suited for production sites!
 */

/**
 * Get around the problem with wpmu_create_blog() where sanitize_user()  
 * strips out the semicolon (:) in the $domain string
 * This means created sites with hostnames of 
 * e.g. example.tld8080 instead of example.tld:8080
 */
add_filter( \'sanitize_user\', function( $username, $raw_username, $strict )
{
    // Edit the port to your needs
    $port = 8080;

    if(    $strict                                                // wpmu_create_blog uses strict mode
        && is_multisite()                                         // multisite check
        && $port == parse_url( $raw_username, PHP_URL_PORT )      // raw domain has port 
        && false === strpos( $username, \':\' . $port )             // stripped domain is without correct port
    )
        $username = str_replace( $port, \':\' . $port, $username ); // replace e.g. example.tld8080 to example.tld:8080

    return $username;
}, 1, 3 );

/**
 * Temporarly change the port (e.g. :8080 ) to :80 to get around 
 * the core restriction in the network.php page.
 */
add_action( \'load-network.php\', function()
{
    add_filter( \'option_active_plugins\', function( $value )
    {
        add_filter( \'option_siteurl\', function( $value )
        {
            // Edit the port to your needs
            $port = 8080;

            // Network step 2
            if( is_multisite() || network_domain_check() )
                return $value;

            // Network step 1
            static $count = 0;
            if( 0 === $count++ )
                $value = str_replace( \':\' . $port, \':80\', $value );
            return $value;
        } );
        return $value;
    } );
} );
我刚刚在我的dev安装中测试了这一点,但这可能需要更多的检查;-)

SO网友:s_ha_dum

您不能使用端口8080。我不知道为什么这是一个相当常见的web服务器端口。然而you can\'t:

121         if ( ( false !== $has_ports && ! in_array( $has_ports, array( \':80\', \':443\' ) ) ) ) {
122                 echo \'<div class="error"><p><strong>\' . __( \'ERROR:\') . \'</strong> \' . __( \'You cannot install a network of sites with your server address.\' ) . \'</p></div>\';
123                 echo \'<p>\' . sprintf(
124                         /* translators: %s: port number */
125                         __( \'You cannot use port numbers such as %s.\' ),
126                         \'<code>\' . $has_ports . \'</code>\'
127                 ) . \'</p>\';
128                 echo \'<a href="\' . esc_url( admin_url() ) . \'">\' . __( \'Return to Dashboard\' ) . \'</a>\';
129                 echo \'</div>\';
130                 include( ABSPATH . \'wp-admin/admin-footer.php\' );
131                 die();
132         }
注意事项! in_array( $has_ports, array( \':80\', \':443\' ) ). 这些端口是硬编码的。没有可以用来更改它们的过滤器,即使在get_clean_basename() (我不敢猜测,如果你能改变它的回报,你会制造什么样的恐怖)。

将服务器改为使用端口443或端口80。