欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2022-05-28 14:42:56
...
代码在本地运行正常,部署到Linux就不好使了。
前端代码:
	


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] 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 目录再试,应该没有其他可能了


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

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

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