关于Smarty在Server 2003 IIS6下失败的问题解决


问题症状:
    使用smarty管理的页面上出现大量warnings.出错函数集中为smarty-include , unlink , chmod , rename 等。而且设置 display_error = off之后,某些被 {include ...}的文件显示不出来,严重的时候整张页面空白,需要反复刷新5-6次以上才能出现正常的页面。

问题检查:
    1 尝试将internals/core.write_file.php中 @unlink(...);函数前加入if(file_exists(...))之后,unlink的warning完全消失,但是其他warning继续交替出现。
    2 怀疑是rename无法将临时文件删除,导致move失败,遂将1文件中@unlink函数下面的@rename函数变为@copy函数后,所有warnings均消失,一切恢复正常。但是在%tmp%目录下的tmp文件数目随着刷新次数的增加而激增。
    3 怀疑点确定后,将%tmp%的共享用户加入Network和IUSER,并赋予全部权限,把copy函数改回rename,测试一切正常。至此问题解决。

问题结论:
    1 加了@的unlink函数,在文件不存在的情况下仍然抛出warnings,因此要加入文件存在性测试。
    2 在windows下,tempnam函数的默认目录是%tmp%目录,因此要保证他的对Iuser和network的可写性。

posted on 2007-10-11 15:39  Timanders  阅读(501)  评论(0)    收藏  举报

导航