IIS 7上部署PHP【后续一】
在之前成功在windows 2008+iis7环境下部署php的基础上,今天把之前的挂Q网站转移到了这个服务器下。
文件拷贝到服务器后,问题继续出现.
1
首先出现的问题是,Mysql的数据库名称和账户密码的问题。
在安装mysql的时候,输入过一个密码,但是只有这个密码,数据库名称和帐号又是多少?
这里是找到的常用Mysql命令,看完了这些就可以得出答案:默认帐号是root,数据库名称?要自己创建了才知道~
2
第二个问题:获取上面的帐号密码之后,正常情况下,打开fiyi.tk/install到配置入口,输入上面的帐号密码可以完成Mysql的数据表创建和基本配置。
但是意外的出现了500 internal server error。问题的明细没有抛出来,具体原因只(ji)能(shu)靠(bu)猜(gou)。
打开fiyi.tk,可以发现首页可以浏览。在网页源代码的开头有数据库链接的测试代码,如果链接失败会报错。可以打开首页说明数据库链接是正确的。问题在其他地方。
先手动解决数据库的数据表问题以及网站配置的问题。
在网站的资源包里面的install文件夹下面,有一个install.sql的文件,这里保存了创建需要的数据表的sql命令。有了这个文件,配合上面的Mysql的"导入.sql文件的命令",轻松解决数据库表结构的创建问题。而网站的基本配置在之前的搭建平台文章中有提过,内容是保存在siteinfo.php中的,手动修改保存即可。
3
解决了数据表的问题,再次打开网站首页,选择注册新用户。
问题又来了。验证码的图像没有刷出来,随手填写信息点击确认后,再次出现了500 internal server error。看来问题不能避免了。
百度了这个问题,很多人都是建议先把具体的问题抛出来,然后具体对待。怎么抛出来呢?有两个思路,一个是修改php.ini,另一个改网站的web.config。
修改php.ini:
修改php.ini文件如下
log_errors = Off
另外php关闭warning报错,修改php.ini文件中的error_reporting,默认情况下应该是:
display_errors = Off
error_reporting = E_ALL & ~E_NOTICE如果修改成这样还是出现warning报错就把warning也去掉:
error_reporting = E_ALL & ~E_NOTICE | E_WARNING
最后重启iis
在重启iis之前,先重启CGI和FastCGI设置。
修改web.config:
Windows主机,分IIS6和IIS7。
解决Godaddy美国空间IIS6的500错误方法:
[code lang="xml"]
<configuration>
<system.web>
<customErrors mode=”Off”/>
<compilation debug=”true”/>
</system.web>
</configuration>
[/code]
解决Godaddy美国空间IIS7的500错误方法:
[code lang="xml"]
<configuration>
<system.webServer>
<httpErrors errorMode=”Detailed” />
<asp scriptErrorSentToBrowser=”true”/>
</system.webServer>
<system.web>
<customErrors mode=”Off”/>
<compilation debug=”true”/>
</system.web>
</configuration>[/code]
把以上代码放到记事本内,再直接修改文件名及后缀为:web.config 就通过以上方法,就可以轻松解决您的Godaddy美国空间的500错误了。也能方便你在做网站转移过程中,解决具体的兼容问题。
一般,都是数据库应用路 径多了个“/”,出现乱码的时候解决办法也很简单的! 只要在顶部加上下面代码就行了(注意:去掉两边的空格):
UTF-8编码的加上:< % @ LANGUAGE=”VBSCRIPT” CODEPAGE=”65001″% > GB2312编码的加上:< % @ LANGUAGE=”VBSCRIPT” CODEPAGE=”936″% >
在我的情况下,修改php.ini没什么反应,而在修改了web.config之后,问题明细终于显现出来了。
4
问题的明细:
Warning: session_start() [function.session-start]: open(C:\Users\YOURNAME\AppData\Local\Temp\php\session\sess_ficdel21e6lupsojqdk62ofts5, O_RDWR) failed: No such file or directory (2) in C:\webapp\folder\index.php on line 24
这段是从别的地方截取的,我看到的报错和这个类似,除了路径不一样。而这段文字的作者在下面清晰的说明了解决方案:
The solution to the above error is really simple. Simply re-create the folder C:\Users\YOURNAME\AppData\Local\Temp\php\session\. For some reason, you or your Windows Vista (e.g. during a disk cleanup) may deleted all the files and folder under C:\Users\YOURNAME\AppData\Local\Temp\ and this is the main reason PHP can’t find the correct location to create its temporary file for new session.
只需在相应的目录下创建对应文件名的文件夹即可。
(这里应该是一个低级错误。在配置php.ini中有一个session的保存位置,当时随手写了一个不存在的路径,导致了这个错误。)
在处理完上述的问题后,打开注册窗口,终于如愿的看到了验证码的图片。输入数据后,注册成功。登录之后,也可以开始添加需要挂Q的号码了。
5
到这里,剩下最后一个问题没有解决。之前挂Q有一个cronjobs可以隔段时间刷QQ的状态,但那是在空间商提供的cPanel里面设置的。
在这个独立服务器里面怎么设置实现,思路上采用系统自带的计划任务,每个15秒执行php.exe,输入-q C:\WebSite\cronjobs\cron.php来执行。
初步测试,输入C:\php\php.exe -q C:\WebSite\cronjobs\cron.php失败。并没有执行这个页面。
经测试,..php.exe -q ..cron.php这样的代码格式是有效的,在浏览器中手动执行fw1.php/newsid.php也是有效的。所以问题出现cron.php里面。
这里同样是一个低级错误,在浏览器中输入www.fiyi.tk会发现是空白的,而fiyi.tk则是有效的。这样看来,问题处在cron.php里面的绝对路径上。
修改之后,执行一次计划任务,如期望的,所有的QQ状态刷新成了"自动更新",后台mysql中QQ的sid数据也刷新了。
到此,问题解决,网站重新上线。