[wp-trac] [WordPress Trac] #25239: $_SERVER['SERVER_NAME'] not a reliable when generating email host names
WordPress Trac
noreply at wordpress.org
Fri Sep 6 14:05:28 UTC 2013
#25239: $_SERVER['SERVER_NAME'] not a reliable when generating email host names
-------------------------+-------------------------------------------------
Reporter: layotte | Owner:
Type: defect | Status: new
(bug) | Milestone: Awaiting Review
Priority: normal | Version: trunk
Component: Mail | Keywords: has-patch dev-feedback needs-
Severity: normal | testing
-------------------------+-------------------------------------------------
For quite some time I have been having an issue with my comment
notifications. The From address has been wordpress at _. I haven't paid much
attention to this, but I had some spare time and decided to pursue the
issue. Here it is...
I am running WPMS w/ domains (latest stable) with Nginx and PHP5-FPM. In
WordPress the comment notifications from email addresses are being
generated using $_SERVER['SERVER_NAME'] to get the current site's domain
name.
e.g.
{{{
$wp_email = 'wordpress@' . preg_replace('#^www\.#', '',
strtolower($_SERVER['SERVER_NAME']));
}}}
However, because of my environment my Nginx config for my site has the
server_name set to "_" (underscore). Which is a catchall --
http://nginx.org/en/docs/http/server_names.html.
Site config in Nginx:
{{{
# Redirect everything to the main site.
server {
listen [::]:80 default_server;
listen [::]:443 ssl;
ssl_certificate /etc/nginx/ssl.crt/xxx.com.2012.crt;
ssl_certificate_key /etc/nginx/ssl.key/xxx.com.2012.key;
server_name _;
root /var/www/xxx.com;
access_log /var/log/nginx/xxx.com.access.log;
error_log /var/log/nginx/xxx.com.error.log;
client_max_body_size 100m;
if ($http_host = "www.xxx.com") {
rewrite ^ http://xxx.com$request_uri permanent;
}
include global/restrictions.conf;
# Additional rules go here.
include global/wordpress-ms.conf;
}
}}}
The default fastcgi_params has this set:
{{{
fastcgi_param SERVER_NAME $server_name;
}}}
Thus, $_SERVER['SERVER_NAME'] is outputting "_" (underscore).
I propose we move away from $_SERVER['SERVER_NAME'] when generating the
from email addresses and use the available $current_site global object
which stores the domain variable ($current_site->domain). I have
implemented this change on my own site and have included the patch here.
In the meantime, anyone else facing this problem can change their
fastcgi_param to $host instead of $server_name. In my opinion, not the
best solution, but it works for now.
--
Ticket URL: <http://core.trac.wordpress.org/ticket/25239>
WordPress Trac <http://core.trac.wordpress.org/>
WordPress blogging software
More information about the wp-trac
mailing list