posts - 3, comments - 42, trackbacks - 0, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

2009年8月7日

虽然主要是做.net开发的,但是,时不时的还要搞一下php,但是,php在windows下的配置,总是走很多弯路,正好前几天又配置了一下,因此总结在这里,做为自己的备忘,也希望给遇到问题的朋友们提供一些帮助。
首先说明一下配置环境:
操作系统:windows 2003 standard sp2
PHP版本:5.2.5
MySql版本:5
PHPMyAdmin:2.11.6
一、首先配置IIS,添加新的服务器扩展

输入phpisapi.dll文件的路径,设置扩展状态为允许:

二、设置网站属性,主目录为php网站所在的文件夹


输入phpisapi.dll文件的路径,注意有些php网站需要把“确认文件是否存在”这个选项去掉的,扩展名写.php:

现在php已经可以在iis中运行了。写一个php测试文件1.php,内容如下:
<?
      phpinfo();
?>
在浏览器中打开这个页面,如图:


三、配置MySql,首先写一个mysql的配置文件,在这里我的配置文件为my.ini,文件中的注释已经很清楚了,在这里就不多说了。


四、安装mysql服务,切换到mysql\bin目录,执行如下命令,安装并启动mysql服务,注意my.ini配置文件的路径要写准确


五、接下来,配置php5支持mysql,首先修改php文件夹下的php.ini-dist文件,修改为php.ini,用记事本打开,找到mysql选项,把前面的;去掉

然后复制php\ext文件夹下的php_mysql.dll和php文件夹下的libmysql.dll复制到c:\windows\system32文件夹:



再打开我们的测试页面,这个时候,应该能看到如下所示,表示已经启用mysql:



六、最后配置phpmyadmin,复制phpmyadmin到网站根目录,修改phpmyadmin的config.inc.php文件,注意红色注释的内容
$cfg['Servers'][$i]['host']          = 'localhost'; // Mysql服务器名或ip地址
$cfg['Servers'][$i]['port']          = '';          // MySQL 服务端口,这里留空表示使用默认端口
$cfg['Servers'][$i]['socket']        = '';          // Path to the socket - leave blank for default socket
$cfg['Servers'][$i]['connect_type']  = 'tcp';       // How to connect to MySQL server ('tcp' or 'socket')
$cfg['Servers'][$i]['extension']     = 'mysql';     // mysql扩展
$cfg['Servers'][$i]['compress']      = FALSE;       // Use compressed protocol for the MySQL connection
$cfg['Servers'][$i]['controluser']   = '';          // MySQL control user settings
                                                    // (this user must have read-only
$cfg['Servers'][$i]['controlpass']   = '';          // access to the "mysql/user"
                                                    // and "mysql/db" tables).
                                                    // The controluser is also
                                                    // used for all relational
                                                    // features (pmadb)
$cfg['Servers'][$i]['auth_type']     = 'config';    // 身份验证方式(config, http or cookie based)
$cfg['Servers'][$i]['user']          = 'root';      // 用户名,这里使用root
$cfg['Servers'][$i]['password']      = '';          // 密码,第一次使用,也留空,以后更改mysql的root密码以后,再修改

保存以后,如果能够用浏览器打开下面的页面,就可以使用phpmyadmin管理mysql了。


最后,附上php5,mysql5,phpmyadmin
Phpmyadmin
PHP5mysql5

posted @ 2009-08-07 15:18 谢启祥 阅读(1516) 评论(18) 编辑

2009年8月5日

前几天学生问怎样用C#发送电子邮件,网上文章很多,随手找了一篇,给学生,让他自己去看下。结果,搞了一天没有搞定,只好来仔细看一下。用C#发送电子邮件,网上介绍的很多文章都是使用SmtpClient,也有System.Web.Mail ,但是,System.Web.Mail 已经是不推荐使用的了。以下是在网上常见的一种发送电子邮件的代码:
Code

这些代码基本上都没有任何错误,编译也都会通过,但是,如果使用这种方式发送,基本上可以保证,你的电子邮件发送不成功。然后,这里是缺少身份验证,而且比较麻烦就是这个身份验证。下面是我给学生写的一个示例:
Code

这里的重点是邮箱身份验证那个地方,一定不能写错,否则,邮件发送不出去。到这里,似乎是大功告成了,但是,你会发现,相同的程序,在某些机器上可以发送成功,在某些机器上发送总是失败,是系统的原因?似乎不是,因为相同的系统,也是有的发送成功,有的发送失败。那是,框架的原因?似乎也不是。
这里就有一个很令人迷惑的现象出现,同样的系统,同样的框架,还是有的能发送成功,有的发送失败。失败的具体原因说是邮件标头编码有错误。那么,我们去掉Subject,不写,用默认的可以吗?也是一样的。这个问题很见鬼,于是使用EtherPeek进行抓包,发现了一个有趣的现象,这里有一个很重要的包:

这里要注意的是红色划线的地方,“EHLO xqxPC”,我的机器名就是xqxPC,问题就在这里啦,SmtpClient发送电子邮件的时候,需要发送一条EHLO指令到邮件服务器,参数是机器名,如果机器名使用中文,就发送不成功了。



简单总结一下:
1、使用SmtpClient发送电子邮件是很简单的,只要正确创建了MailMessage对象和SmtpClient就可以很容易的发送出去电子邮件。
2、如果电子邮件服务器需要身份验证【似乎现在都需要身份验证,除非自己配置的】,注意下面这句话:
smtpClient.Credentials = new System.Net.NetworkCredential("帐号@gmail.com", "密码");
3、机器名不能使用中文。
PS:为什么这样一篇文章也有人反对呢?Why?莫非以后不能在这里写东西啦?呵呵……,一直在犹豫要不要在这里开博,继续犹豫吧……

posted @ 2009-08-05 15:14 谢启祥 阅读(4668) 评论(24) 编辑

2009年8月1日

我的机器使用的是windows vista 旗舰版,安装了visual studio 2008,启用了自动更新,昨天发现自动更新总是在不停的提示安装一个叫做VS90SP1-KB971092-x86的更新,并且,提示安装成功以后,一会儿又提示安装不上。
十分令人费解。最后直接从微软网站上把补丁下载了下来,尝试手动安装,但是,依然安装失败,提示:VC Libraries QFE Patch 不适用或被系统的其他条件阻止。有关详细信息,请单击以下链接。
最后使用winrar解压缩了这个补丁,执行VS90SP1-KB971092-x86.msp,完成了安装,重新启动机器,就没有问题了。注意,安装的过程中,没有什么特别多的提示,安装完以后,直接重新启动机器,不要选择“安装更新并关闭计算机”。至此,该补丁完成安装,没有了讨厌的提示。
哈哈哈,安装完以后,在园子里发现有另外的文章介绍这个问题,不知能否解决,如果大家按我说的解决不了,可以参考一下,没有尝试过园子里的另外一篇文章的方法。地址:如何解决系统补丁(KB971092)重复安装问题

posted @ 2009-08-01 19:26 谢启祥 阅读(1180) 评论(0) 编辑