Rumah >pembangunan bahagian belakang >tutorial php >Thinkphp3.2 Linux下缩略图生成失败

Thinkphp3.2 Linux下缩略图生成失败

WBOY
WBOYasal
2016-06-23 13:52:56846semak imbas

代码在本地运行正常,部署到Linux就不好使了。
前端代码:

	<script type="text/javascript">	$(function() {		$("#file_upload").uploadify({	        height        : 30,	        swf           : '{$Think.const.SITE_URL}public/GoodsUploadify/uploadify.swf',	        uploader      : '{:U("Goods/GoodsUploadify")}',	        width         : 120,	      	//允许上传的文件后缀	        'fileTypeExts':'*.jpg;*.jpge;*.gif;*.png',	        'multi'       : false, //是否支持多文件上传 	        'simUploadLimit' : 1, //一次同步上传的文件数目	        'sizeLimit'      : 31457280, //设置单个文件大小限制	        'queueSizeLimit' : 1, //队列中同时存在的文件个数限制	        //'buttonImage':'/public/uploadify_shop/upbutton.jpg',//浏览按钮的背景图片路径	        'formData': { 'sessionid': '<?php echo session_id();?>'}, 	        'onUploadSuccess' : function(file, data, response) {	        	var data = $.parseJSON(data);            $('#images').attr('src','{$Think.const.SITE_URL}public/GoodsImages/'+data['url']);            $('#original_img').val(data['url']);	        },	    });	});	</script>


php端代码:
public function GoodsUploadify() {		if (! empty ( $_FILES )) {			if (isset ( $_POST ['sessionid'] )) {				session_id ( $_POST ['sessionid'] );				session_start (); // 注意此函数要在session_id之后			}			import ( 'Org.Net.UploadFile' );			$upload = new \UploadFile ();			$upload->maxSize = 3292200;			$upload->allowExts = explode ( ',', 'jpg,gif,png,jpeg' );			$upload->savePath = "./public/GoodsImages/";			// 设置需要生成缩略图,仅对图像文件有效			$upload->thumb = true;			// 设置需要生成缩略图的文件后缀			$upload->thumbPrefix = 'z_,s_'; // 生产2张缩略图			                                // 设置引用图片类库包路径			$upload->thumbMaxWidth = '520,225';			// 设置缩略图最大高度			$upload->thumbMaxHeight = '520,225';			// 设置上传文件规则			$upload->saveRule = 'uniqid';			// 删除原图			// $upload->thumbRemoveOrigin = true;			$this->ajaxReturn ( 1, 'json' );			if (! $upload->upload ()) { // 上传错误提示错误信息				$this->ajaxReturn ( 2, 'json' );				$this->ajaxReturn ($upload->getErrorMsg (), 0, 'json' );			} else { // 上传成功 获取上传文件信息				$this->ajaxReturn ( 3, 'json' );				$info = $upload->getUploadFileInfo ();				$temp_size = getimagesize ( "./public/GoodsImages/" . $info ['0'] ['savename'] );				if ($temp_size [0] < 100 || $temp_size [1] < 100) { // 判断宽和高是否符合要求					$this->ajaxReturn ( 0, '图片宽或高不得小于100px!', 0, 'json' );				}				$data ['picName'] = $info ['0'] ['savename'];				$data ['status'] = 1;				$data ['url'] = $data ['picName'];				$data ['info'] = $info;				$this->ajaxReturn ( $data, 'json' );			}					}	}


其中$this->ajaxReturn ( (1/2/3), 'json' );为调试代码
可以返回1,当1注销时2和3都不返回,1,2,3都注销时,什么都不返回,
缩略图和原图都是一个路径,原图上成功说明缩略图路径没错。所以我就搞不懂了。
现在问题就是,缩略图生成失败,没有返回值,求大神帮忙,本来想把上传插件源码传上来参考的,没有上传附件功能啊,放这个框里 又太长 = =


回复讨论(解决方案)

if (isset ( $_POST ['sessionid'] )) {
                session_id ( $_POST ['sessionid'] );
                session_start (); // 注意此函数要在session_id之后
            }
THINKPHP 自动启用 session_start ,你自己设置的,重复了。

import ( 'Org.Net.UploadFile' );
            $upload = new \UploadFile ();

你在以上之前调试,echo  "ddddddddddd";exit;
看看能否有输出信息。
还有,开启调试模式,有错误,会自动显示错误

本地正常,表示代码没有问题
Linux下不正常,可能是:
1、文件不全
2、路径和文件名没注意大小写
3、权限问题
4、php版本问题

if (isset ( $_POST ['sessionid'] )) {
                session_id ( $_POST ['sessionid'] );
                session_start (); // 注意此函数要在session_id之后
            }
THINKPHP 自动启用 session_start ,你自己设置的,重复了。

import ( 'Org.Net.UploadFile' );
            $upload = new \UploadFile ();

你在以上之前调试,echo  "ddddddddddd";exit;
看看能否有输出信息。
还有,开启调试模式,有错误,会自动显示错误


 session_start  注销后,还是没返回值。  dddd能返回,
看我贴的代码:if (! $upload->upload ()) { // 上传错误提示错误信息 这行之前 输出都是可以返回的。

本地正常,表示代码没有问题
Linux下不正常,可能是:
1、文件不全
2、路径和文件名没注意大小写
3、权限问题
4、php版本问题


1、文件不全应该不会吧,
2、缩略图和原图上传公用一个路径,原图能上传,说明路径没错
3、php5.3.6的,TP3.2只要5.3以上就可以,不然早报错了
4、我已经把网站的跟目录递归777了,下面所有的都是777 都看过了上传的那个文件夹也是777 不然原图也传不上啊

清空 Runtime 目录再试,应该没有其他可能了

清空 Runtime 目录再试,应该没有其他可能了


我觉得另蹊跷,先清完缓存,再回

清空 Runtime 目录再试,应该没有其他可能了


没用呢,连个返回值都木有,哎。

既然原图成功,那应该是处理成缩略图的时候出错了。
你应该到具体生成缩略图的代码里调试,看看哪一步出错了。

缩略图如果生成失败,检查缩略图的文件路径和权限是否正确。

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn