멀티 사이트 네트워크 포트 번호 문제?


9

나는 다음과 같은 오전 이 튜토리얼을 워드 프레스 사이트의 네트워크를 만들 수 있습니다. 추가 후

/* 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를 처음 사용하는 사람이라면 누구나 도움을 주시면 감사하겠습니다.


출력은 echo get_clean_basedomain();무엇입니까? 지원되는 포트는 :80및 것 같습니다 :443.
birgire

답변:


8

경고 : 이것은 프로덕션 사이트가 아닌 개발자 설치에 대한 테스트입니다.

나는 그들의 dev에 설치 횟수에 있지만 다른 것보다 포트에서 멀티 사이트를 개발할하고자하는 사람들을위한 해결 방법이 있다면 궁금했다 :80:443:8080.

Henri Benoit 의이 블로그 게시물 만 찾았 습니다 . 여기에서 핵심 제한 사항을 해결하기 위해 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 설치에서 이것을 테스트했지만 더 많은 검사가 필요할 수도 있습니다. ;-)


1
Plz는이 코드를 어디에 사용해야하는지 알려줍니다. 제 경우 에는를 /wp-content/mu-plugins/wpse-ms-on-different-port.php 사용하여 문제를 해결하는 것과 같은 경로 if ( ( false !== $has_ports && ! in_array( $has_ports, array( ':80', ':443', ':8080' ) ) ) ) {wp-admin\includes\network.php없지만 해킹 코어는 나쁜 습관입니다.
raxa

1
mu-plugins아래 에 디렉토리 를 만들 수 있습니다 /wp-content/. sanitize_user()세미콜론 (:)을 제거 하여 새 사이트를 만들 수 없으므로 코어를 수정하는 것만으로는 충분하지 않습니다 . @raxa
birgire

5

포트 8080을 사용할 수 없습니다. 왜 이것이 웹 서버에서 상당히 일반적인 포트인지는 모르겠습니다. 그러나 당신은 할 수 없습니다 :

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을 사용하도록 변경하십시오.


@ s_ha_dum ♦ 필요한 포트 8080을 포함하도록 코드를 조정하여이 문제를 해결합니다. if ( ( false !== $has_ports && ! in_array( $has_ports, array( ':80', ':443', ':8080' ) ) ) ) {network.php in wp-admin\includes\network.php - [Line-121]
raxa

1
해킹 코어는 나쁜 습관입니다. 8080 포트 수 있도록 워드 프레스에 패치를 80 또는 443을 사용하여 제출하도록 서버를 변경
s_ha_dum
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.