php for windows的bug
参考:
第一种可能:
去掉 php中 eaccelerator 的扩展
这样做能够解决您的问题,不过可能会加重系统负担
因为eaccelerator主要是为了节省系统资源的东西
具体做法是找到php.ini
如果是我帮您配置的,一般在c:/php/php.ini或者 c:/winnt/php.ini 或者c:/windows/php.ini
去掉
zend_extension_ts="C:\php\extensions\eaccelerator_win_xxx.dll"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="c:\temp"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
ea主要是在unix环境下开发的,但是作者忽略到windows实际上不像u主机那样,是没有u主机的那种内存共享机制的
这个bug已经提交给他们了,希望0.9.5能够解决
当然,如果您的机器这个问题不严重,建议还是保留,ea是一块非常优秀的Php缓存+加速软件
配合zo使用,将会降低系统负担 50%-80%左右,提高负载能力、速度和效率 200%左右
第二种可能
session_save_path 需要设定一个实际的物理路径,并且该目录需要everyone的所有权限,类似U主机的0777
第三种可能
c:/winnt/temp 或者 c:/windows/temp
也需要everyone的所有权限,类似U主机的0777
第四种可能
您的内存严重不足,查看一下,如果有问题,请加内存,最好是一次加两条
比如加1G内存,最好是加2条一模一样的512M。否则没有启用双通道,效果也很一般
第五种可能
ZendOptimizer和php的搭配不是很好
换个版本试试看
目前比较稳定的搭配是
php4.3.11+zo 2.5.10a
或者php4.4.1+zo 3.0 beta2
第六种可能
这种多属于用win2003的用户
他们在应用池中设定了限制
比如多长时间回收,最大使用内存多少等等
这些设置势必造成这个经典的php错误
很多人说,是php版本的问题,其实不然,可以从四个地方来看这个问题
1,是否zend所需的dll文件所在目录给的权限不够,必须有读取和运行的权限
2,是否使用的2003,设置过应用池,比如池中限制了什么什么,调整一下再试试看,是否好了,呵呵
3,php.ini有两个地方没有设置,而且一些程序必须用到的
A
将;upload_tmp_dir该行的注释符,即前面的分号“;”去掉,使该行在php.ini文档中起作用。upload_tmp_dir是用来定义上传文件存放的临时路径,在这里你还可以给其定义一个绝对路径,例如:upload_tmp_dir = d:upload 当然,此时你的d:upload目录必须有读写权限。
这里我设置为
upload_tmp_dir = "c:\windows\temp\"
B
出现这样的错误语句一般是因为你的php.ini中关于session.save_path一项没有设置好,解决的方法是将session.save_path和session.cookie_path 设置置为
session.save_path = "c:\windows\temp\"
session.cookie_path = "c:\windows\temp\"
(这个设置不知道是否正确.没试过.)
定义和用法
fopen() 函数打开文件或者 URL。
如果打开失败,本函数返回 FALSE。
函数原型:
fopen(filename,mode,include_path,context)
http://www./w3school/php/func_filesystem_fopen.asp.htm
说明
fopen() 将 filename 指定的名字资源绑定到一个流上。如果 filename 是 "scheme://..." 的格式,则被当成一个 URL,PHP 将搜索协议处理器(也被称为封装协议)来处理此模式。如果该协议尚未注册封装协议,PHP 将发出一条消息来帮助检查脚本中潜在的问题并将 filename 当成一个普通的文件名继续执行下去。
如果 PHP 认为 filename 指定的是一个本地文件,将尝试在该文件上打开一个流。该文件必须是 PHP 可以访问的,因此需要确认文件访问权限允许该访问。如果激活了安全模式或者 open_basedir 则会应用进一步的限制。
如果 PHP 认为 filename 指定的是一个已注册的协议,而该协议被注册为一个网络 URL,PHP 将检查并确认 allow_url_fopen 已被激活。如果关闭了,PHP 将发出一个警告,而 fopen 的调用则失败。
对 context 的支持是 PHP 5.0.0 添加的。
提示和注释
注释:为移植性考虑,强烈建议在用 fopen() 打开文件时总是使用 "b" 标记。
2.打开这个文件以后,对这个文件进行读取.这里用到了PHP ->fread();函数
定义和用法
fread() 函数读取文件(可安全用于二进制文件)。
函数原型:
fread(file,length) //备注:我才知道.这个函数获取到的文件是按字节(Byte)来计算文件大小的....
http://www./w3school/php/func_filesystem_fread.asp.htm
说明
fread() 从文件指针 file 读取最多 length 个字节。该函数在读取完最多 length 个字节数,或到达 EOF 的时候,或(对于网络流)当一个包可用时,或(在打开用户空间流之后)已读取了 8192 个字节时就会停止读取文件,视乎先碰到哪种情况。
返回所读取的字符串,如果出错返回 false。
提示和注释
提示:如果只是想将一个文件的内容读入到一个字符串中,请使用 file_get_contents(),它的性能比 fread() 好得多。
例子 1
从文件中读取 10 个字节:
<?php
$file = fopen("test.txt","r");
fread($file,"10");
fclose($file);
?>
<?php $file = fopen("test.txt","r"); fread($file,"10"); fclose($file); ?>
例子 2
读取整个文件:
<?php
$file = fopen("test.txt","r");
fread($file,filesize("test.txt"));
fclose($file);
?>
<?php $file = fopen("test.txt","r"); fread($file,filesize("test.txt")); fclose($file); ?>
3.开始替换模板变量.这里用到了PHP->str_replace();函数
定义和用法
str_replace() 函数使用一个字符串替换字符串中的另一些字符。
函数原型:
str_replace(find,replace,string,count)
http://www./w3school/php/func_string_str_replace.asp.htm
提示和注释
注释:该函数对大小写敏感。请使用 str_ireplace() 执行对大小写不敏感的搜索。
注释:该函数是二进制安全的。
3.替换模板变量后.使用PHP->echo();函数进行输出
编码部分:
$title="测试标题";
$file="测试内容";
//打开这个模板
$tempdata=fopen("test.html","r");
//读取模板中的内容
$str=fread($tempdata,filesize("test.html"));
//替换模板中的内容
$str=str_replace('{$title}',$title,$str);
$str=str_replace('{$center}',$file,$str);
//输出
echo $str;
jQPie
这是一个扩展自jQuery,结合PHP的一个Ajax框架。支持XML,HTML和JSON handler。jQPie提供的功能包括:
利用$.getJSON方法简化来自PHP的请求和处理数据。
利用$.(element).load方法注入PHP生成的html到某一页面元素中。
利用$.jqpie方法直接从web页面调用PHP函数。在响应$.jqpie调用时从PHP函数反过来调用jQuery。
phpmsajax
一组PHP文件用来支持在PHP Web应用程序中使用Microsoft AJAX Library。
jsLINB
jsLINB 是一个完全的浏览器端javascrīpt解决方案,兼容大部分现代浏览器(IE6.0/IE7.0/firefox1.5 /firefox2.0/opera9/Safari2.0,Safari 缺乏测试)。它可以帮助程序开发者实现各种类型的RIA应用-在提供更加强大框架的同时更加易用。压缩的核心代码仅仅50k, 包括了javascrīpt类型检查,强制类型,精密且灵活的事件模型,自定义事件,observer和tie/untie, boxing/unBoxing/reBoxing模型,直接调用,dom生成,查询,遍历和操作,css 样式操作,css 类操作,dom属性操作,javascrīpt完美OO实现,javascrīpt线程,高级Ajax,强大的Drag Drop,超级控件(可在外观/模板/行为/数据模型四个维度上定制的标准控件,可完全自定义控件)等。
My-BIC
My-BIC是一个易于使用,强大的Ajax/PHP框架。
支持 XML,JSON和TEXT的格式Ajax数据传输。支持EasyForms:调用一个函数就能取得Form中的所有值,并为你创建一个少许美化的查询串。ajaxObj.getForm ('formid')。 JSON客户端Encoding支持:利用该功能你就能够在客户端或服务器之间发送和接收经过JSON Encoding的数据。网络断线保护:当服务器Down掉时My-BIC将帮助你删除请求并阻止产生更多的调用。内置Submission队列:所有的AJAX请求将会发送到正确的顺序中,所有请求都会被存储在队列中防止被覆盖。提供一个帮助你在运行期进行调试的可视化操作界面。
aSSL
aSSL:SSL for Ajax。这个开源项目可用于那些需要SSL支持的Ajax应用中。
PHPLiveX
PHPLiveX是一个PHP类库可用于在web页面中使用Ajax调用PHP函数。它非常易于使用,在调用一个PHP函数不需要附加额外的功能,包含一个灵活地预加载属性,兼容IE, Opera, Mozilla, Firefox等浏览器。
RSPA
RSPA是一个基于组件事件驱动的ajax框架适用于PHP4与PHP5。使用这个框架可以从客户端控制事件调用服务器端PHP class函数。也可以在服服务器端直接操作客户端对象。
phpAjaxTags
phpAjaxTags是模仿著名Java标签库"AjaxTags"的一个PHP标记库。简单但强大,易于使用与安装。不需要编写js代码就能实现ajax功能。
XAJAX
xajax 通过Javascrīpt直接调用PHP函数。它使用Javascrīpt stub来调用PHP脚本中的函数,对象方法,和类方法。服务器端响应由于xajax响应对象创建,该对象提供非常多的命令比如:给一个HTML元素赋值,显示一个警告对话框等。还支持自定义脚本输出。所有特定浏览器代码(如使用XMLHttpRequest)都是抽象的,并且发送各种数据类型到服务器端都非常容易实现。xajax提供多种配置选项目以便易于与现存web应用或框架相集成。它的Javascrīpt核心简洁明了,而且可以通过覆盖来支持更多的高级Javascrīpt功能。
NanoAjax
NanoAjax是一个基于PHP5,面向对象(包括Javascrīpt和PHP)的AJAX框架。它使用JSON作为数据交换格式。NanoAjax能够把多个虚拟请求归结到一个正真的请求当中。整个框架非常小,并且易于使用。基于class的服务器端事件处理方式。
Pear:HTML_AJAX
Pear:HTML_AJAX是一个相当成熟的Ajax框架, 使用JSON进行数据传输。內建丰富的例子,包括留言板、登录、grab…等等。
Ajax Agent
Ajax Agent是一个非常易于使用(只需三行代码),并且非常强大的开源框架用于快速构建AJAX或RIA应用程序。支持复杂的数据类型比如: associated arrays与object。使用JSON(Javascrīpt Object Notation)作为数据交换格式。
AjaxAC
AjaxAC是一个PHP框架可用于开发/创建/生成AJAX应用程序。 特点如下:
1.所有应用程序代码全都包含在一个单独的class中(可以附带任何Javascrīpt包)。
2.PHP文件/HTML页面的调用非常简洁。
3.内置简化处理Javascrīpt事件的功能
4.内置创建和处理subrequest的功能。
5.可以自定义配置值,所以某些元素可以在运行期才被设置。
6.没有杂乱的Javascrīpt代码塞满所调用的Html代码,所有事件都是被动态附加上的。
7.易于与模板引擎相集成基于以上两点原因。
8.易于挂钩(hook)现有的PHP classe或MySQL数据库以便从subrequest返回数据。
AJASON
AJASON是一个基于PHP5的AJAX开发包。它具有以下特点:
1.PHP5与Javascrīpt代码完全采用面向对象开发。
2.从Javascrīpt异步调用PHP函数与对象方法。
3.能够在服务器与客户端之间交换复杂的数据类型像arrays与object (更确切地说是对象属性)。
4.使用Javascrīpt回调函数来处理服务端响应。
5.能够在客户端处理服务端的AJASON错误。