# Multisite Network Port Num Issues?

I am following This tutorial to Create a Network of WordPress Sites . After adding

/* Multisite */
define( 'WP_ALLOW_MULTISITE', true );


to my wp-config.php file and when I start to configure multisite network I got this error

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


I try to change

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


to

 Listen 0.0.0.0:80
Listen [::0]:80


from httpd.conf of Apache but due to this wamp server remains orange . How to solve this .I am a new to WordPress Any help would be highly appreciated .

• What's the output of echo get_clean_basedomain(); ? Supported ports seems to be :80 and :443. Dec 27 '15 at 15:37

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

I was curious to see if there was a workaround, for those who want to develope multisites on their dev installs but on different ports than :80 and :443, e.g. :8080.

I only found this blog post by Henri Benoit. There he gives examples how to modify the 3.9.1 core, to get around the core restrictions.

Here's a must-use plugin /wp-content/mu-plugins/wpse-ms-on-different-port.php where we try to avoid core modifications:

<?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;
} );
} );


I just tested this on my dev install, but this might need more checks of course ;-)

• Plz tell me where this code has to be used. In my case I have no path like /wp-content/mu-plugins/wpse-ms-on-different-port.php My issue is solved by using if ( ( false !== $has_ports && ! in_array($has_ports, array( ':80', ':443', ':8080' ) ) ) ) { in wp-admin\includes\network.php but Hacking Core is bad practice.
– raxa
Dec 28 '15 at 12:53
• You can create the mu-plugins directory under /wp-content/. Note that it's not enough to modify the core that way, because you will not be able to create new sites because sanitize_user() strips out the semicolon (:). @raxa Dec 28 '15 at 14:03

You can't use port 8080. I have no idea why as that is a fairly common port for a web server. However, 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 }  Notice ! in_array($has_ports, array( ':80', ':443' ) ). Those ports are hard-coded. There are no filters you can use to alter them, not even in get_clean_basename() (and I am afraid to guess at what horrors you'd create if you could alter what that returns).

• @ s_ha_dum♦ I solve this issue by adjusting the code to include the required port 8080 so It looks like this; if ( ( false !== $has_ports && ! in_array($has_ports, array( ':80', ':443', ':8080' ) ) ) ) { in network.php in wp-admin\includes\network.php - [Line-121]