≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 网络编程 > PHP笔记

php Smarty临时文件创建失败的解决办法

人气:1030 时间:2018-09-25

这篇文章主要为大家详细介绍了php Smarty临时文件创建失败的解决办法,具有一定的参考价值,可以用来参考一下。

对php Smarty临时文件创建失败的解决办法感兴趣的小伙伴,下面一起跟随四海网的小编两巴掌来看看吧!
Smarty的编译文件是先生成tmp格式的临时文件再重命名回php和ini格式的编译文件的,使用的文件是: internals/core.write_file.php

如果临时文件生成失败,建议按以下步骤查找原因:
(1)检查临时文件目录的权限,是否赋给了写入权限
(2)如果不存在目录权限的问题,则检查当前系统是否禁用了tempnam()函数,以及tempnam()函数的第一个目录参数路径是否完整或存在问题
(3)如果以上问题都不存在,则检查临时文件目录下是否存在后缀名为tmp的文件,如果存在则说明问题应该出在rename函数上,建议参照如下修改:
修改的文件是internals/core.write_file.php 旧的代码是:

/**
* php Smarty临时文件创建失败的解决办法
*
* @param 
* @arrange 512-笔记网: www.q1010.com
**/
function smarty_core_write_file($params, &$smarty){ 
$_dirname=dirname($params['filename']); 
if($params['create_dirs']) { $_params=array('dir'=>$_dirname); 
require_once(SMARTY_CORE_DIR . 'core.create_dir_structure.php'); 
smarty_core_create_dir_structure($_params, $smarty);
}
/**以下代码需要修改**/
$_tmp_file=tempnam($_dirname, 'wrt');
if(!($fd=@fopen($_tmp_file, 'wb'))) { 
$_tmp_file=$_dirname . DIRECTORY_SEPARATOR . uniqid('wrt'); 
if(!($fd=@fopen($_tmp_file, 'wb'))) { 
$smarty->trigger_error("problem writing temporary file '$_tmp_file'"); return false;
}
} 
fwrite($fd, $params['contents']);
fclose($fd);
if(DIRECTORY_SEPARATOR == '\\' || !@rename($_tmp_file, $params['filename'])){
@unlink($params['filename']); 
@rename($_tmp_file, $params['filename']);
}
@chmod($params['filename'], $smarty->_file_perms);
return true;
}
/***   来自四海网(www.q1010.com)   ***/


新修改成的代码为:

/**
* php Smarty临时文件创建失败的解决办法
*
* @param 
* @arrange 512-笔记网: www.q1010.com
**/
function smarty_core_write_file($params, &$smarty){
$_dirname=dirname($params['filename']);
if($params['create_dirs']) {
$_params=array('dir'=>$_dirname);
require_once(SMARTY_CORE_DIR . 'core.create_dir_structure.php');
smarty_core_create_dir_structure($_params, $smarty);
}
/**修改为如下代码**/
$fd=@fopen( $params['filename'], 'wb');
if(!$fd){
return false;
}
fwrite($fd, $params['contents']);
fclose($fd);
@chmod($params['filename'], $smarty->_file_perms);
return true;
}
/***   来自四海网(www.q1010.com)   ***/
做以上修改虽可以解决这个问题,但如代码中注释所述,这个机制是为了解决文件死锁如写冲突一类的问题的,所以这种处理方法会有可能导致生成临时文件的时候出错,但经过本人自己试用,发现还没有出过错,所以大胆的改吧。

本文来自:http://www.q1010.com/173/1378-0.html

注:关于php Smarty临时文件创建失败的解决办法的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:Smarty

您可能感兴趣的文章

  • php 通过define定义常量在smarty模板使用的简单示例
  • php smarty把数字格式化为货币格式(每3个数字加一个逗号)实现方法
上一篇:PHP 生成随机字符串,自定义长度示例
下一篇:php实现伪静态页面的简单示例
热门文章
  • PHP 写入WRITE编码为UTF8的文件示例
  • PHP 中文字符串截取函数示例:支持gb2312,gbk,big
  • PHP 简单留言板的制作示例
  • 解决Fatal error: Call to undefined function mb_convert_encoding() in错误问题
  • PHP语言基础(标记、注释、变量、数组、常量、函数)示例
  • php 生成迅雷链接的简单示例
  • php 获取短网址的实现方法
  • PHP 通用分页类的简单示例
  • PHP 使用文件方式导入导出整个MYSQL数据库的实现方法
  • php 获取MYSQL错误的简单示例
  • 最新文章
    • 解决PHP使用redis实现统计缓存MySQL压力的问题
    • php 简单的上传进度条的简单示例
    • php 给html中引用的js和css路径打上版本号的实现方法
    • php 实现计算年龄精准到年月日的实例
    • php+ajax无刷新分页的简单示例
    • 解决php+ajax无刷新上传图片的问题
    • 解决PHP生成HTML静态页面的问题
    • 解决PHP使用uniqid函数生成唯一ID的问题
    • 解决PHP防刷票的一些问题
    • 微信access_token的获取开发的实现方法

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。