我维护一个Mediawiki网站,直到最近,一切都运行良好。用户可以登录、创建页面、注册电子邮件地址等。
但是当我的一个用户尝试创建一个新帐户时,她从来没有收到服务器的电子邮件确认,但从来没有任何错误信息。以前,用户会收到来自"apache@myurl.org"的链接和所有东西。我尝试了一下这个问题,并尝试通过偏好菜单切换到另一个电子邮件地址。然而,在输入新的电子邮件地址后,页面显示以下错误信息,以亮红色显示:
发送邮件错误:PHP的mail()函数中存在未知错误。"
我试着创建一个测试用户,创建帐户后,我收到了这个稍微不同的消息(电子邮件是一个简单的gmail,没有奇怪的字符或任何东西):
维基名称无法发送您的确认邮件。请检查您的电子邮件地址是否有无效字符。邮件返回:PHP的mail()函数中出现未知错误。"
我在谷歌上搜索了这个错误,发现这个错误出现在管理员设置SMTP服务器时,与我所做的无关。我找不到任何其他有用的信息。
我确保mysql数据库可以被wiki用户访问,并且LocalSettings.php有正确的mysql登录信息。
邮件设置在LocalSettings.php中没有改变(并且以前工作过):
$wgEnableEmail = true;
$wgEnableUserEmail = true; # UPO
$wgEmergencyContact = "apache@myurl.org";
$wgPasswordSender = "apache@myurl.org";
我能想到的唯一一件事是我不久前更改了Apache端口,但其他用户已经创建了帐户并成功验证了他们的电子邮件。
我在OSX 10.8.5上运行MAMP,使用:
MediaWiki 1.22.5
php 5.5.10 - mysql 5.5.34
mediaWiki文档解决方案
将以下内容放入LocalSettings.php中,对您的remailaccount和您的remailpassword进行必要的替换:
$wgSMTP = array(
'host' => 'ssl://smtp.gmail.com',
'IDHost' => 'gmail.com',
'port' => 465,
'username' => 'yourEmailAccount@gmail.com',
'password' => 'yourEmailPassword',
'auth' => true
);
然后安装发送邮件所需的软件包。
$ sudo pear install mail
$ sudo pear install net_smtp
在此之后,您可能会得到一个身份验证失败类型错误。您需要登录您正在使用的gmail帐户,并验证刚刚登录的人就是您。你只需要验证一次。(gmail会给你发送一封电子邮件,你只需按照指示操作)
我刚刚弄明白了!
对于那些遇到同样问题的人,下面是我的修复方法:
- 开放MAMP 打开首选项菜单,选择PHP选项卡
- 在缓存下拉菜单中,选择'APC'(我的是'off')
- 点击'OK',然后输入您的管理员密码
现在回到wiki并重新发送确认电子邮件。我没有尝试过其他缓存选项,但它们也可能工作。
https://phabricator.wikimedia.org/T32260#1093954
问题是includes/mail/UserMailer.php
设置sendmail的-f
选项,即使已经在其他地方设置(例如php.ini
)。
现在把这行注释掉:
# $extraParams .= ' -f ' . $returnPath;