মাল্টিসাইট নেটওয়ার্ক পোর্ট নুম ইস্যু?


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অ্যাপাচি থেকে তবে এই মোড়ানো সার্ভারের কারণে কমলা থেকেই যায়। কীভাবে এটি সমাধান করবেন আমি ওয়ার্ডপ্রেস থেকে নতুন যে কোনও সাহায্যের খুব প্রশংসা হবে।


এর আউটপুট কি echo get_clean_basedomain();? সমর্থিত বন্দরগুলি মনে হয় :80এবং :443
বার্জায়ার

উত্তর:


8

সতর্কতা: এটি কেবল ডেভ ইনস্টলগুলির জন্য পরীক্ষা এবং উত্পাদন সাইট নয় just

আমি কৌতূহলী ছিলাম যে কোনও কার্যকারিতা আছে কিনা, যারা তাদের ডিভ ইনস্টলগুলিতে মাল্টিসাইটগুলি বিকাশ করতে চান তবে এবং বিভিন্ন বন্দরগুলিতে :80এবং :443যেমন :8080

আমি কেবল হেনরি বেনোইটের এই ব্লগ পোস্টটি পেয়েছি । সেখানে তিনি উদাহরণগুলি দিয়েছেন যে কীভাবে 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;
    } );
} );

আমি কেবল এটি আমার ডিভ ইনস্টলে পরীক্ষা করেছি, তবে এর জন্য অবশ্যই আরও চেকের প্রয়োজন হতে পারে ;-)


1
প্লিজ আমাকে বলুন এই কোডটি কোথায় ব্যবহার করতে হবে। আমার ক্ষেত্রে আমার কোনও পথ নেই যেমন /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তবে হ্যাকিং কোরটি খারাপ অভ্যাস।
রেক্সা

1
আপনি mu-pluginsঅধীন ডিরেক্টরি তৈরি করতে পারেন /wp-content/। মনে রাখবেন যে কোরটি সেভাবে পরিবর্তন করতে যথেষ্ট নয়, কারণ আপনি নতুন সাইট তৈরি করতে সক্ষম হবেন না কারণ sanitize_user()সেমিকোলন (:) :) সরিয়ে দেয়। @ ইরক্সা
বার্জিরে

5

আপনি ৮০৮০ বন্দরটি ব্যবহার করতে পারবেন না why কেন এটি কোনও ওয়েব সার্ভারের জন্য মোটামুটি সাধারণ পোর্ট হিসাবে আমার কোনও ধারণা নেই। তবে, আপনি পারবেন না :

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]
রেক্সা

1
হ্যাকিং কোর খারাপ অভ্যাস। আপনার সার্ভারটি 80 বা 443 ব্যবহার করতে পরিবর্তন করুন এবং 8080 বন্দরটি অনুমতি দেওয়ার জন্য ওয়ার্ডপ্রেসে একটি প্যাচ জমা দিন
s_ha_dum
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.