Thinkphp3.2 Linux下缩略图生成失败
代码在本地运行正常,部署到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 目录再试,应该没有其他可能了
没用呢,连个返回值都木有,哎。
既然原图成功,那应该是处理成缩略图的时候出错了。
你应该到具体生成缩略图的代码里调试,看看哪一步出错了。
缩略图如果生成失败,检查缩略图的文件路径和权限是否正确。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Linux系統的五個基本組件是:1.內核,2.系統庫,3.系統實用程序,4.圖形用戶界面,5.應用程序。內核管理硬件資源,系統庫提供預編譯函數,系統實用程序用於系統管理,GUI提供可視化交互,應用程序利用這些組件實現功能。

VS Code 一步/下一步快捷鍵的使用方法:一步(向後):Windows/Linux:Ctrl ←;macOS:Cmd ←下一步(向前):Windows/Linux:Ctrl →;macOS:Cmd →

要查看 Git 倉庫地址,請執行以下步驟:1. 打開命令行並導航到倉庫目錄;2. 運行 "git remote -v" 命令;3. 查看輸出中的倉庫名稱及其相應的地址。

雖然 Notepad 無法直接運行 Java 代碼,但可以通過借助其他工具實現:使用命令行編譯器 (javac) 編譯代碼,生成字節碼文件 (filename.class)。使用 Java 解釋器 (java) 解釋字節碼,執行代碼並輸出結果。

在 Sublime 中運行代碼的方法有六種:通過熱鍵、菜單、構建系統、命令行、設置默認構建系統和自定義構建命令,並可通過右鍵單擊項目/文件運行單個文件/項目,構建系統可用性取決於 Sublime Text 的安裝情況。

Linux的主要用途包括:1.服務器操作系統,2.嵌入式系統,3.桌面操作系統,4.開發和測試環境。 Linux在這些領域表現出色,提供了穩定性、安全性和高效的開發工具。

要安裝 Laravel,需依序進行以下步驟:安裝 Composer(適用於 macOS/Linux 和 Windows)安裝 Laravel 安裝器創建新項目啟動服務訪問應用程序(網址:http://127.0.0.1:8000)設置數據庫連接(如果需要)
