近期在用mediawiki做二次开发。
开始就被挡在了邮件发送功能。
邮件功能是mediawiki的重要功能之一。必须要用的东西。
综合各种信息,有两种解决方案:
一是mediawiki用PHP的mail函数发邮件。
这依赖于SMTP服务器。一般而言,对于linux系统,要求开启邮件服务器服务,这一般自动开启。所以一般问题不大。
但对于win系统而言,要求在本地安装smtp服务器。我的就档在这儿了。本地安装,发送正常。但不知为何,smtp在收到邮件后去无法将邮件送出。
我的本地机是局域网。家里两台电脑,一个路由器上网,网关192.168.1.1。 按相关资料配置后,smtp只能接收邮件,但无法发送邮件,有高人帮助的可以给我留言。
二是用外部smtp服务器发邮件,这需要pear扩展。
配置localsetting.php
按照要求安装既可。如果遇到时区问题,设置时区:ini_set('date.timezone', 'Asia/Shanghai');
添加
$wgSMTP = array(
"host" => 'smtp.sina.com.cn',
"IDHost" => 'sina.com.cn',
"port" => "25",
"auth" => true,
"username" => 'fxs_2008@sina.com',
"password" => '邮件密码');
却验证用户的邮箱,OK了!
三、其他信息:
下面的我参考的相关资料
参考一:
settings文件,以及Local
Settings文件。defaultsettings文件中,主要设置管理员邮箱的用户名,密码,邮件服务器的信息等,如:
$wgSMTP =
array(
"host" => 'smtp.sina.com.cn',
"IDHost" =>
'sina.com.cn',
"port" => "25",
"auth" => true,
"username" =>
'wikinfs@sina.com',
"password" => '******');
记得还要$wgEnableUserEmail =
true;$wgEnableEmail =
true;
而localsettings文件主要设置对应email服务的路径,以及发送邮件对应的邮箱名字:
$path = array( $IP,
"$IP/includes",
"$IP/languages","D:/web_root/php/PEAR/PEAR","D:/web_root/php/PEAR");
$wgEmergencyContact
= "wikinfs@sina.com";
$wgPasswordSender =
"wikinfs@sina.com";
wiki使用时找不到mail.php的解决
系统平台:
OS: Centos 4.2
php: php5.1.1
wiki: mediawiki
相关目录:
php: /usr/local/php5
wiki:/usr/local/wiki
问题描述:
在wiki的注册页面使用email发送新建用户的密码时,页面报错:找不到mail.php。
问题解决:
mail.php是pear的模块,而pear是 "PHP Extension and Application
Repository"(pear.php.net).
php5.1.1默认情况下自动安装1.4.5版本的pear,但是mail等pear模块需要独自下载安装。
最新的模块包可以到pear.php.net去下载,那里有最新的模块包。
安装mail:
cd /usr/local/php5/bin/
wget [url]http://pear.php.net/get/Mail-1.1.9.tgz"[/url]
下载最新的mail模块包(可以先上网查看)
./pear install -O Mail-1.1.9.tgz 离线安装mail包
之后再次试验wiki,又报错:找不到Net/SMTP模块。
安装smtp:
cd /usr/local/php5/bin
wget [url]http://pear.php.net/get/Net_SMTP-1.2.7.tgz"[/url]
./pear install -O Net_SMTP-1.2.7.tgz
报错,需要安装Net_Socket包。
安装socket:
wget [url]http://pear.php.net/get/Net_Socket-1.0.6.tgz"[/url]
./pear install Net_Socket-1.0.6.tgz
./pear install Net_SMTP-1.2.7.tgz
然后再次试验wiki注册,用email发送密码成功。呵呵,终于搞定了。
默认情况下,./pear install xxx.tgz 试图从
pear.php.net网站上下载xxx包。但是,我发现总是出错,干脆把包先当下来,然后加个参数 -O(大写字母),本地安装,一切顺利。
pear是PHP的扩展和应用程序库,包含了很多有用的类,安装好php5.0后,pear实际上并没有被安装,安装的方法如下:
1.在php目录中双击go-pear.bat。
2.按照提示输入一些设置信息,主要是要把局域网的网关加上,如http://192.168.0.1:80/
,pear要用这个地址访问Internet,若无代理服务器则直接回车
3.然后会提示一些包和PHP绑定,选择Y 。
4.然后安装基本包和提示安装成功,就这么简单。
5.打开windows目录下的php.ini文件,然后查找到如下的地方:
; UNIX: "/path1:/path2"
;include_path = ".:/php/includes"
;
; Windows: "path1;path2"
;include_path = ".;c:phpincludes"
把最后一行的注释去掉,然后把后面路径改成你的PEAR路径,例如:
include_path = ".;c:phppear"
保存PHP.INI,然后重新启动APACHE即可。
---------------
pear命令帮助
---------------
在php目录下多了个pear.bat,在CMD中使用。它的部分命令功能如下:
安装:
自网路安装某一个pear程式库:
pear install packagename
下载 packages 但不安装:
pear download packagename
pear download-all
安装已下载的package:
pear install filename.tgz
列表:
目前pear网站上所有可取得pear程式库列表:
pear remote-list
列出已安装package:
pear list
列出可以升级的package:
pear list-upgrades
更新(升级):
更新package:
pear upgrade packagename
pear upgrade-all
移除:
删除已安装的package:
pear uninstall packagename
安装后安装DB库:
命令行安装pear类库
cmd进入此目录
>pear.bat install db
效果是安装了db库。
写个程序测试: (这里使用Mysql数据库新建了个Table .数据表自建.这里不再详述.不会回家面壁50分钟!!)
<html><head><title>Library
Books</title></head>
<body>
<table
border=1>
<tr><th>Id</th><th>name</th><th>Age</th></tr>
<?php
//
connect
require_once('DB.php');
$db_host = "localhost";
$db_user =
"root";
$db_passwd = "123456";
$db_dbName =
"stu";
$PersistentConnection = 1 ;
$db_type ="mysql";
$db_proto
="";
$db_options="";
$db=DB::connect("$db_type://$db_user:$db_passwd@$db_host/$db_dbName",$db_options);
if
(DB::iserror($db)) {
die($db->getMessage());
}
// issue the
query
$sql = "SELECT * FROM students";
$q =
$db->query($sql);
if (DB::iserror($q)) {
die($q->getMessage());
}
// generate the table
while
($q->fetchInto($row)) {
?>
<tr><td><?= $row[0]
?></td>
<td><?= $row[1]
?></td>
<td><?= $row[2]
?></td>
</tr>
<?php
}
?>
本文永久链接: http://www.zzxj.net/blog/fxs_2008/archive/2009/12/24/106.html
发表于 @ 2009年12月24日 |评论(loading... )|收藏