PHP has encountered an Access Violation at 01E4AC5A

在server03下,iis6.0搭建php环境
php版本:PHP-5.2.9
安装discuz时提示: PHP has encountered an Access Violation at 01E4AC5A
在网上搜,百度出来的都是复制粘贴的,真恶心,只好Google,说是一个版本的bug。找了些资料还是不行。
就下载了一个新版本:php-5.2.14 重新配置后没问题了。
无法加载phpmysql模块时,请将extension_dir= “绝对路径”
重启iis搞定
 
PS:php5isapi.dll  php5nsapi.dll  当你解压php后有这两个文件,那说明开始支持ISAPI和FastCGI方式运行php。
新版本的5.3.3 中已经不支持ISAPI方式运行php了。
FastCGI组件:http://www.iis.net/download/FastCGI
下载php的msi安装包选择FastCGI 配置一下就行。
php.ini -dist 一般用于程序开发。
php.ini -recommended 用于线上服务使用
发表评论

iis6.0 FastCGI错误 The FastCGI Handler was unable to process the request.

今天在03下的iis6.0配置php-5.3.3 都知道此版本以不支持ISAPI方式,只能用FastCGI
环境基本配置好后,测试页,提示如下错误:
The FastCGI Handler was unable to process the request.
search后:
php-5.3.3-vc9是用vc2008编译的,缺少cv++运行库,下载安装即可:
PS:
解压包的前提要安装vc++2008运行库否则会出错,见blog
php.ini 配置:
fastcgi.impersonate = 1 把前面的;去掉
其它根普通配置一样
c:\windows\system32\inetsrv下有五个文件,其中有用的 是:fcgtext.dll(处理php映射),fcgitext.ini(FastCGI的配置文件)
打开FASTCGI配置文件fcgitext.ini,在最后[Types]修改为:
[Types]
php=PHP
[PHP]
exepath=c:\Php\php-cgi.exe
不配置fsgitext.ini出错信息:
FastCGI Error
The FastCGI Handler was unable to process the request.
——————————————————————————–
Error Details:
Could not find entry for “php” on site 66 in [Types] section.
Error Number: 1413 (0×80070585).
Error Description: 无效索引。
HTTP Error 500 – Server Error.
Internet Information Services (IIS)
重启iiscmd命令:iisreset
相关资料:
TS是线程安全(Thread Safe ),一般Apache模块、IIS的ISAPI需要使用。
NTS是无线程安全的(Non Thread Safe ),因为php-cgi不需要。
此外还分VC6和VC9,vc6是给Apache用的,vc9是给IIS用的。VC9需要安装c++2008运行库。
如果是使用ISAPI的方式来运行PHP就必须用Thread Safe(线程安全)的版本;而用FastCGI模式运行PHP的话就没有必要用线程安全检查了,用None Thread Safe(NTS,非线程安全)的版本能够更好的提高效率。
发表评论

windows03+apache+php+mysql 搭建过程及错误

以下为一篇Apache2.2.4和php5.2.1配置方法的转载文章(来自:javaeye.com/topic/94722),虽然说得比较详细。但实际应用中不需要这样去处理。我的做法是下载一个集成APACHE&PHP&MYSQL的安装包(例如:EasyPHP),直接安装即可。

一.php的安装与调试
由于php是一个zip文件(非install版),安装较为简单,解压就行。把解压的 php5.2.1-Win32重命名为 php5。并复制到C盘目录下。即安装路径为 c:\php5
1    找到php目录下的 php.ini-dist或 php.ini.recommended文件,重命名为 php.ini
并复制到系统盘的windows目录下(以c:\windows为例).
2    再把php目录下的php5ts.dll,libmysql.dll复制到目录 c:\windows\system32下。
3    把php5\ext目录下的php_gd2.dll,php_mysql.dll,php_mbstring.dll文件复制到c:\windows\system32下
如果没有加载 php_gd2.dll    php将不能处理图像。没有加载php_mysql.dll php将不支持mysql函数库
php_mbstring.dll在后面使用phpmyadmin时支持宽字符。
4 打开c:\windows\php.ini文件(关联到mysql)
设置扩展路径
查找 extension_dir 有这么一行extension_dir = “./”
将此行改成
extension_dir = “C:\php5\ext”
其中C:\php5是你安装php的路径。路径不正确将无法加载dll
(注意:有些php版本是 ;extension_dir = “./” 要把前面的分号去掉)
查找 extension
extension=php_mbstring.dll
extension=php_gd2.dll
extension=php_mysql.dl
把上面3项前面的分号去掉,这样apache启动时就可以加载这些dll了
当然前面我们也把这些dll复制到system32下了l
php5时差问题
时间相差八小时
为什么呢?PHP5系列版本新增了时区设置,默认为格林威治时间,与中国所在的东8区正好相差8个小时
查找date.timezone有这么一行
;date.timezone =
将;去掉,改成
date.timezone = PRC
二.apache的调试和整合
1.修改网站根目录
查找 DocumentRoot有这么一行
DocumentRoot”C:/Program Files/Apache Group/Apache2/htdocs”
这就是你网站的根目录,你可以修改,也可以用默认的.如果改,还要修改下面这项,否则可能会出现 403 错误
查找    This should be changed to whatever you set DocumentRoot to .
在它下面两行有
<directory group=”" apache2=”" program=”" apache=”" files=”"></directory>
把上面两项的 C:/Program Files/Apache Group/Apache2/htdocs 改成你想要的目录
2.让apache支持*.php(网页)
查找    DirectoryIndex index.html index.html.var
修改成
DirectoryIndex index.html index.html.var    index.php
这样index.php 可以充当默认页面了
3.Apache中模块化安装php
查找 # LoadModule foo_module modules/mod_foo.so
在此行后加入一行
LoadModule php5_module C:/php5/php5apache2.dll //注意:其中C:/php5/php5apache2.dll是你安装php的相应路径.不要把php5apache2.dll和php5apache.dll混淆.php5apache.dll只适用于apache 版本1的.PHP5压缩包里的php5apache2.dll只适用于apache2.0.*版本,如果是2.2.*以上版本,就可能会出现”Cannot load C:/php/php5apache2.dll into server: The specified module could not be found.”或者:”The requested operation has failed”
4.查找 AddType application/x-gzip .gz .tgz
在此行后加入一行
AddType application/x-httpd-php .php (记住:前边有一个空格哦!!!)
这样apache就可以解释php文件了

在配置文件中加入一行:

phpinidir c:/php //定义php.ini文件路径,载入php模块相关配置(否则安装discuz时会提示没有载入mysql模块)
5.测试
在网站根目录下创建一个 phpinfo.php 文件

phpinfo();
?>

在浏览器打开
http://localhost/phpinfo.php
5.测试php和mysql数据库的关联
在网站根目录下创建一个test.php 文件
$link=mysql_connect(“localhost”,”root”,”12345″);    //12345改成你的mysql密码
if(!$link) echo “失败!”;
else echo “成功!”;
mysql_close();
?>
在浏览器打开 http://localhost/test.php
如果输出成功,则说明大功告成。

特别注意标注的红色部分。感谢原作者。

当前日期: 2010-11-05 星期五 当前时间: 11:18:30.35

再上一错误:

前几天配置iis下php,自己遇到过,网上也提到过iis和php指定版本存在兼容性问题,今天在Apache下也遇到了。

采用discuz做一个论坛,然后在iis下遇到过安装到数据库时,页面打不开,程序崩溃。

今天在Apache下做到安装数据库时,程序再次崩溃。

感觉不对劲查log:错误应用程序 httpd.exe,版本 2.2.17.0,错误模块 php5ts.dll,版本 5.2.14.14,错误地址 0x0000ac5a。

search:

php使用MySql函数导致Apache|iis崩溃的问题:错误应用程序 httpd.exe,版本 2.2.14.02010-04-20 08:24这个问题是在Windows下配置PHP环境时发生的。

具体的表现是php运行正常,但是只要一调用MySql的相关函数,Apache就会崩溃掉。

环境配置方式:

php以模块的方式运行在Apache下。自定义php.ini路径

phpinfo()显示mysql库加载成功

崩溃后在Windows的错误日志中会留下以下内容:

错误应用程序 httpd.exe,版本 2.2.14.0,错误模块 php5ts.dll,版本 5.2.10.10,错误地址 0x0000ac6a。

原因如下:

在安装MySql的时候在配置设定时把MySql的Bin目录放到了系统环境变量Path中。而Bin目录中正好有一个libmysql.dll的库。

而php在加载mysql库的时候会搜索系统环境变量Path每一个目录寻找libmysql.dll,由于mysql的bin目录也在其中,那么php就先把mysql的libmysql.dll加载了。所以就会由于库的兼容问题导致mysql的函数无法运行。 //我的确将mysql加入到了环境变量中

解决方案:

将mysql的bin目录从系统环境变量Path中移出
将libmysql.dll从MySql的bin目录中移出
或者将php的libmysql.dll文件替换mysql的bin下

php文件夹权限,会导致无法加载dll文件,再次确定mysql中的mysql.dll文件位置不在系统环境变量中,否则启动php时,以后会出错,即为兼容性问题

发表评论