v2.4.8
							parent
							
								
									2eee083a66
								
							
						
					
					
						commit
						c2c6eb3a12
					
				|  | @ -44,7 +44,7 @@ | |||
| 2. 对`PHP`不太熟悉的请不要将图床程序放置于二级目录 | ||||
| 3. 请关闭防跨站或删除域名文件夹内的`user.ini`文件 如宝塔面板 | ||||
| 4. 网站域名与图片域名必须填写,如果只有一个域名请填写成一样的 | ||||
| 5. 第一使用会执行安装程序并生成`install.lock` 不执行安装可以删除`install`目录 | ||||
| 5. 第一次使用会执行安装程序并生成`install.lock` 不执行安装可以删除`install`目录 | ||||
| 6. 第一次访问会检查环境并在`config`目录下生成`EasyImage.lock` | ||||
| 7. 可以使用谷歌浏览器的调试模式查看错误`F12->console` | ||||
| 8. 出现`undefined function imagecreatefromwebp()`是因为GD没安装webp | ||||
|  | @ -104,6 +104,8 @@ $HTTP["url"] =~ "^/(i|public)/" { | |||
| - 修复无可疑图片时显示错误 | ||||
| - 修复开启登录上传后无法上传的bug | ||||
| - 增加安装时检测.user.ini | ||||
| - 增加检测鉴黄接口是否可以正确访问 | ||||
| - 将插件检测等敏感信息转义到管理目录 | ||||
| - 增加 [nsfwjs](https://github.com/infinitered/nsfwjs) 接口方式检测违规图片 | ||||
|   - 作者测试时用的`docker`搭建 `docker`地址:[zengdawei/nsfw_restful_api | ||||
| ](https://hub.docker.com/r/zengdawei/nsfw_restful_api) | ||||
|  |  | |||
|  | @ -823,6 +823,7 @@ if (isset($_GET['reimg'])) { | |||
| <link href="<?php static_cdn(); ?>/public/static/zui/lib/datetimepicker/datetimepicker.min.css" rel="stylesheet"> | ||||
| <script src="<?php static_cdn(); ?>/public/static/zui/lib/datetimepicker/datetimepicker.min.js"></script> | ||||
| <script src="<?php static_cdn(); ?>/public/static/md5.min.js"></script> | ||||
| <?php /** 引入空间检测文件 */ if ($config['checkEnv']) require_once APP_ROOT . '/application/check_admin.inc.php'; ?>
 | ||||
| <script> | ||||
|     // tips提示
 | ||||
|     $('[data-toggle="tooltip"]').tooltip({ | ||||
|  |  | |||
|  | @ -1,115 +1,87 @@ | |||
| <?php | ||||
| require_once __DIR__ . '/function.php'; | ||||
| // global $config;
 | ||||
| // 跳转安装
 | ||||
| if (!is_file(APP_ROOT . '/install/install.lock') and is_file(APP_ROOT . '/install/install.php')) { | ||||
|     echo '<script type="text/javascript">window.location.href="' . get_whole_url('/') . '/install/index.php"</script>'; | ||||
| } | ||||
| /** | ||||
|  * 检测弹窗内容 | ||||
|  */ | ||||
| 
 | ||||
| global $config; | ||||
| 
 | ||||
| // 扩展检测
 | ||||
| $expand = array('fileinfo', 'iconv', 'gd', 'mbstring', 'openssl',); | ||||
| foreach ($expand as $val) { | ||||
|     if (!extension_loaded($val)) { | ||||
|         echo ' | ||||
|         <script> | ||||
|         new $.zui.Messager("扩展:' . $val . '- 未安装,可能导致图片上传失败! 请尽快修复。", { | ||||
| 			type: "black", // 定义颜色主题
 | ||||
| 			icon: "exclamation-sign" // 定义消息图标
 | ||||
|         }).show(); | ||||
|         </script> | ||||
|     '; | ||||
|     } | ||||
| } | ||||
| // 检测是否更改默认域名
 | ||||
| if (strstr('localhost|127.0.0.1', $_SERVER['HTTP_HOST'])) { | ||||
|     echo ' | ||||
|     <script> | ||||
|     new $.zui.Messager("请修改默认域名,可能会导致网站访问异常! ", {type: "black" // 定义颜色主题 
 | ||||
|     }).show(); | ||||
|     </script> | ||||
|     '; | ||||
| } | ||||
| // 检测是否修改默认密码
 | ||||
| if ($config['password'] === 'e6e061838856bf47e1de730719fb2609') { | ||||
|     echo ' | ||||
|     <script> | ||||
|     new $.zui.Messager("请修改默认密码,否则会有泄露风险! ", {type: "warning" // 定义颜色主题 
 | ||||
|     }).show(); | ||||
|     </script> | ||||
|     '; | ||||
| } | ||||
| // 上部内容
 | ||||
| if (!is_file(APP_ROOT . '/config/EasyIamge.lock')) { | ||||
|     echo ' | ||||
|     <div class="modal fade" id="myModal-1"> | ||||
|         <div class="modal-dialog"> | ||||
|             <div class="modal-content"> | ||||
| if (is_file(APP_ROOT . '/config/EasyIamge.lock')) exit; // 查询锁定弹窗文件是否存在
 | ||||
| file_put_contents(APP_ROOT . '/config/EasyIamge.lock', '安装环境检测锁定文件,如需再次展示请删除此文件!', FILE_APPEND | LOCK_EX); | ||||
| clearstatcache(); | ||||
| ?>
 | ||||
| <div class="modal fade" id="myModal-1"> | ||||
|     <div class="modal-dialog"> | ||||
|         <div class="modal-content"> | ||||
|             <div class="modal-header"> | ||||
|                 <h4 class="modal-title"> | ||||
|                 <i class="icon icon-heart">	</i><a href="https://blog.png.cm/846.html" target="_blank">简单图床-EasyImage2.0</a> 安装环境检测</h4> | ||||
|                     <i class="icon icon-heart"> </i><a href="https://blog.png.cm/902.html" target="_blank">简单图床-EasyImage2.0</a> 安装环境检测 | ||||
|                 </h4> | ||||
|             </div> | ||||
|             <div class="modal-body"> | ||||
|                 <h4>说明:</h4> | ||||
|                 <h5>1. 建议使用<font color="red">PHP7.0</font>及以上版本;</h5> | ||||
|                 <h5>2. 上传失败大部分是由于<font color="red">upload_max_filesize、post_max_size、文件权限</font>设置不正确;</h5> | ||||
|                 <h5>3. 本程序主要用到<font color="red">Fileinfo、GD、Openssl</font>扩展,如果缺失会导致无法访问管理面板以及上传/删除图片。</h5> | ||||
|                 <h5>1. 建议使用<span style="color:red">PHP7.0</span>及以上版本;</h5> | ||||
|                 <h5>2. 上传失败大部分是由于<span style="color:red">upload_max_filesize、post_max_size、文件权限</span>设置不正确;</h5> | ||||
|                 <h5>3. 本程序主要用到<span style="color:red">Fileinfo、GD、Openssl</span>扩展,如果缺失会导致无法访问管理面板以及上传/删除图片。</h5> | ||||
|                 <hr /> | ||||
|                 <h4>EasyImage2.0 基础检测:</h4> | ||||
|                 当前PHP版本:<font style="color:green">' . phpversion() . '</font><br/>'; | ||||
| 
 | ||||
|     echo '<font color="green">upload_max_filesize</font> - PHP上传最大值:' . ini_get('upload_max_filesize'); | ||||
|     echo '<br /><font color="green">post_max_size</font> - POST上传最大值:' . ini_get('post_max_size') . '<br />'; | ||||
|     // 扩展检测
 | ||||
|     $expand = array('fileinfo', 'gd', 'openssl', 'imagick'); | ||||
|     foreach ($expand as $val) { | ||||
|         if (extension_loaded($val)) { | ||||
|             echo ' | ||||
|                 <font color="green">' . $val . "</font> - 已安装
 | ||||
|                 <br />";
 | ||||
|         } else { | ||||
|             echo " | ||||
|                 <script language='javascript'>alert('$val - 未安装')</script>";
 | ||||
|             echo ' | ||||
|                 <font color="red">' . $val . " - 未安装</font>
 | ||||
|                 <br />";
 | ||||
|         } | ||||
|     } | ||||
|     // 文件权限检测
 | ||||
|     $quanxian = substr(base_convert(fileperms("file.php"), 10, 8), 3); | ||||
|     if (IS_WIN) { | ||||
|         echo ' | ||||
|             <font style="color:green">file.php 文件可执行</font><br/> | ||||
|             <font style="color:green">/i 目录可读写</font><br/> | ||||
|             '; | ||||
|     } | ||||
|     if (!IS_WIN) { | ||||
|         if ($quanxian !== '755' and !is_writable(APP_ROOT . '/i/')) { | ||||
|             echo ' | ||||
|             <p style="color:red">file.php 文件不可执行</font>><br/> | ||||
|             <p style="color:red">/i 目录可读写</font>><br/> | ||||
|             '; | ||||
|         } else { | ||||
|             echo ' | ||||
|             <font style="color:green">file.php 文件可执行</font><br/> | ||||
|             <font style="color:green">/i 目录可读写</font><br/> | ||||
|             '; | ||||
|         } | ||||
|     } | ||||
|     echo '</div> | ||||
|                 <p>当前PHP版本:<sapn style="color:green"><?php echo phpversion() ?></sapn>
 | ||||
|                 </p> | ||||
|                 <p>upload_max_filesize - PHP上传最大值:<sapn style="color:green"><?php echo ini_get('upload_max_filesize'); ?></sapn>
 | ||||
|                 </p> | ||||
|                 <p>post_max_size - POST上传最大值:<sapn style="color:green"><?php echo ini_get('post_max_size'); ?></sapn>
 | ||||
|                 </p> | ||||
|                 <?php | ||||
|                 // 扩展检测
 | ||||
|                 $expand = array('fileinfo', 'gd', 'openssl', 'imagick'); | ||||
|                 foreach ($expand as $val) { | ||||
|                     if (extension_loaded($val)) { | ||||
|                         echo ' | ||||
|                             <p style="color:green">' . $val . " - 已安装</p>"; | ||||
|                     } else { | ||||
|                         echo "<script language='javascript'>alert('$val - 未安装')</script>"; | ||||
|                         echo '<p style="color:red">' . $val . " - 未安装</p>"; | ||||
|                     } | ||||
|                 } | ||||
|                 // 文件权限检测
 | ||||
|                 $quanxian = substr(base_convert(fileperms("file.php"), 10, 8), 3); | ||||
|                 if (IS_WIN) { | ||||
|                     echo ' | ||||
|                     <p style="color:green">file.php 文件可执行</p> | ||||
|                     <p style="color:green">/i 目录可读写</p> | ||||
|                     '; | ||||
|                 } | ||||
|                 if (!IS_WIN) { | ||||
|                     if ($quanxian !== '755' and !is_writable(APP_ROOT . '/i/')) { | ||||
|                         echo ' | ||||
|                         <p style="color:red">file.php 文件不可执行</font>> | ||||
|                         <p style="color:red">/i 目录可读写</font>> | ||||
|                         '; | ||||
|                     } else { | ||||
|                         echo ' | ||||
|                         <p style="color:green">file.php 文件可执行</p> | ||||
|                         <p style="color:green">/i 目录可读写</p> | ||||
|                         '; | ||||
|                     } | ||||
|                 } | ||||
|                 ?>
 | ||||
|             </div> | ||||
|             <div class="modal-footer" style="text-align:left"> | ||||
|             <p class="text-primary">安装环境检测弹窗仅在第一次访问主页时展示,弹出后会在<code>config</code>目录下生成<code>EasyIamge.lock</code>文件,如需再次弹出请删除<code>EasyIamge.lock</code>文件。</p> | ||||
|             <p class="text-primary">刷新或按<kbd>ESC</kbd>关闭安装环境检测弹窗。</p> | ||||
|                 <p class="text-primary">安装环境检测弹窗仅在第一次访问主页时展示,弹出后会在<code>config</code>目录下生成<code>EasyIamge.lock</code>文件,如需再次弹出请删除<code>EasyIamge.lock</code>文件。</p> | ||||
|                 <p class="text-primary">刷新或按<kbd>ESC</kbd>关闭安装环境检测弹窗。</p> | ||||
|             </div> | ||||
|         </div> | ||||
|     </div> | ||||
| </div> | ||||
|         <script> | ||||
|         $("#myModal-1").modal({ | ||||
|             keyboard: true, | ||||
|             moveable: true, | ||||
|             backdrop: "static",//点击空白处不关闭对话框
 | ||||
|             show: true | ||||
|         }) | ||||
|         alert("初次打开会检测环境配置,请仔细看!!"); | ||||
|         </script> | ||||
|     '; | ||||
|     file_put_contents(APP_ROOT . '/config/EasyIamge.lock', '安装环境检测锁定文件,如需再次展示请删除此文件!', FILE_APPEND | LOCK_EX); | ||||
|     clearstatcache(); | ||||
| } | ||||
| <script> | ||||
|     $("#myModal-1").modal({ | ||||
|         keyboard: true, | ||||
|         moveable: true, | ||||
|         backdrop: "static", //点击空白处不关闭对话框
 | ||||
|         show: true | ||||
|     }) | ||||
|     alert("初次打开会检测环境配置,请仔细看!!"); | ||||
| </script> | ||||
|  | @ -0,0 +1,79 @@ | |||
| <?php | ||||
| // 扩展检测
 | ||||
| $expand = array('fileinfo', 'iconv', 'gd', 'mbstring', 'openssl',); | ||||
| foreach ($expand as $val) { | ||||
|     if (!extension_loaded($val)) { | ||||
|         echo ' | ||||
|         <script> | ||||
|         new $.zui.Messager("扩展:' . $val . '- 未安装,可能导致图片上传失败! 请尽快修复。",{ | ||||
| 			type: "black", // 定义颜色主题
 | ||||
| 			icon: "exclamation-sign" // 定义消息图标
 | ||||
|         }).show(); | ||||
|         </script> | ||||
|     '; | ||||
|     } | ||||
| } | ||||
| // 检测是否更改默认域名
 | ||||
| if (strstr('localhost|127.0.0.1', $_SERVER['HTTP_HOST'])) { | ||||
|     echo ' | ||||
|     <script> | ||||
|     new $.zui.Messager("请修改默认域名,可能会导致网站访问异常! ",{ | ||||
|         type: "black" // 定义颜色主题 
 | ||||
|     }).show(); | ||||
|     </script> | ||||
|     '; | ||||
| } | ||||
| // 检测是否修改默认密码
 | ||||
| if ($config['password'] === 'e6e061838856bf47e1de730719fb2609') { | ||||
|     echo ' | ||||
|     <script> | ||||
|     new $.zui.Messager("请修改默认密码,否则会有泄露风险! ",{ | ||||
|         type: "warning" // 定义颜色主题 
 | ||||
|     }).show(); | ||||
|     </script> | ||||
|     '; | ||||
| } | ||||
| // 检测监黄接口是否可以访问
 | ||||
| if ($configp['checkImg'] !== 0) { | ||||
| 
 | ||||
|     if ($config['checkImg'] == 1) { | ||||
| 
 | ||||
|         if (!@IP_URL_Ping('api.moderatecontent.com', 80, 1)) { | ||||
|             echo ' | ||||
|             <script> | ||||
|                 new $.zui.Messager("moderatecontent 鉴黄接口无法ping通! ",{ | ||||
|                     type: "warning" // 定义颜色主题 
 | ||||
|                 }).show(); | ||||
|             </script> | ||||
|             '; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     if ($config['checkImg'] == 2) { | ||||
| 
 | ||||
|         $ip = parse_url($config['nsfwjs_url'])['host']; | ||||
|         $port = parse_url($config['nsfwjs_url'])['port']; | ||||
| 
 | ||||
|         if (filter_var($ip, FILTER_VALIDATE_IP)) { | ||||
|             if (!@IP_URL_Ping($ip, $port, 1)) { | ||||
|                 echo ' | ||||
|                 <script> | ||||
|                     new $.zui.Messager("' . $ip . $port . ' 鉴黄接口无法ping通! ",{ | ||||
|                         type: "warning" // 定义颜色主题 
 | ||||
|                     }).show(); | ||||
|                 </script> | ||||
|                 '; | ||||
|             } | ||||
|         } else { | ||||
|             if (!@IP_URL_Ping($ip, 80, 1)) { | ||||
|                 echo ' | ||||
|                 <script> | ||||
|                     new $.zui.Messager("' . $ip . ' 鉴黄接口无法ping通! ",{ | ||||
|                         type: "warning" // 定义颜色主题 
 | ||||
|                     }).show(); | ||||
|                 </script> | ||||
|                 '; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -39,10 +39,8 @@ | |||
|   </p> | ||||
| </footer> | ||||
| 
 | ||||
| <?php | ||||
| // 环境检测
 | ||||
| checkEnv($config['checkEnv']); | ||||
| ?>
 | ||||
| <?php /** 环境检测 */ if ($config['checkEnv']) require_once APP_ROOT . '/application/check.php'; ?>
 | ||||
| 
 | ||||
| <script> | ||||
|   // js 获取当前网址二维码
 | ||||
|   var qrcode = new QRCode(document.getElementById("qrcode"), { | ||||
|  |  | |||
|  | @ -582,7 +582,6 @@ function deldir($dir) | |||
|     } | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
|  * 图片监黄curl 访问网站并返回解码过的json信息 | ||||
|  * @param $img string 图片url | ||||
|  | @ -745,7 +744,6 @@ function re_checkImg($name) | |||
|     } | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
|  * 创建缩略图 | ||||
|  * @param $imgName string 需要创建缩略图的名称 | ||||
|  | @ -1049,3 +1047,21 @@ function checkIP($ipNow = null, $ipList = null, $model = false) | |||
|         return true; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * 测试IP或者url是否可以ping通 | ||||
|  * @param $host string ip或网址 | ||||
|  * @param $port int 端口 | ||||
|  * @param $timeout float 过期时间 | ||||
|  * @return bool true|false | ||||
|  */ | ||||
| function IP_URL_Ping($host, $port, $timeout) | ||||
| { | ||||
|     $errno = 444; | ||||
|     $errstr = 'fSockOpen 错误'; | ||||
|     $fP = fSockOpen($host, $port, $errno, $errstr, $timeout); | ||||
|     if (!$fP) { | ||||
|         return false; | ||||
|     } | ||||
|     return true; | ||||
| } | ||||
|  |  | |||
|  | @ -4,8 +4,8 @@ $config=Array | |||
| 	'title'=>'简单图床 - EasyImage', | ||||
| 	'keywords'=>'简单图床,easyimage,无数据库图床,PHP多图长传程序,自适应页面,HTML5,markdown,bbscode,一键复制', | ||||
| 	'description'=>'简单图床EasyImage是一款支持多文件上传的无数据库图床,可以完美替代PHP多图上传程序,最新html5自适应页面兼容手机电脑,上传后返回图片直链,markdown图片,论坛贴图bbscode链接,简单方便支持一键复制,支持多域名,api上传。', | ||||
| 	'tips'=>'<a><li class="icon icon-bullhorn text-muted"> 单文件≤10M,单次上传≤30张</li></a> | ||||
| <a href="https://github.com/icret/EasyImages2.0" target="_black"><i class="icon icon-heart"> 简单图床是一款开源图床, 支持多文件上传无数据库</i></a> | ||||
| 	'tips'=>'<a><li class="icon icon-bullhorn text-muted"> 单文件≤10M,单次上传≤30张</li></a> | ||||
| <a href="https://github.com/icret/EasyImages2.0" target="_black"><i class="icon icon-heart"> 简单图床是一款开源图床, 支持多文件上传无数据库</i></a> | ||||
| <a href="https://github.com/icret/EasyImages2.0" target="_black"><i class="icon icon-github"> 如果你喜欢这种图床风格就下载喔 (๑•̀ㅂ•́)و✧</i></a>', | ||||
| 	'domain'=>'http://127.0.0.1', | ||||
| 	'imgurl'=>'http://127.0.0.1', | ||||
|  | @ -46,18 +46,17 @@ $config=Array | |||
| 	'checkImg'=>0, | ||||
| 	'checkImg_value'=>50, | ||||
| 	'moderatecontent_key'=>'', | ||||
| 	'nsfwjs_url'=>'http://172.17.0.2:3307/api/nsfw/classify?url=', | ||||
| 	'footer'=>'<a href="/admin/terms.php" target="_blank">请勿上传违反中国政策的图片</a> | ||||
| <script> | ||||
| var _hmt = _hmt || []; | ||||
| (function() { | ||||
|   var hm = document.createElement("script"); | ||||
|   hm.src = "https://hm.baidu.com/hm.js?c790ac2bdc2f385757ecd0183206108d"; | ||||
|   var s = document.getElementsByTagName("script")[0];  | ||||
|   s.parentNode.insertBefore(hm, s); | ||||
| })(); | ||||
| </script> | ||||
| ', | ||||
| 	'nsfwjs_url'=>'', | ||||
| 	'footer'=>'<a href="/admin/terms.php" target="_blank">请勿上传违反中国政策的图片</a> | ||||
| <script> | ||||
| var _hmt = _hmt || []; | ||||
| (function() { | ||||
|   var hm = document.createElement("script"); | ||||
|   hm.src = "https://hm.baidu.com/hm.js?c790ac2bdc2f385757ecd0183206108d"; | ||||
|   var s = document.getElementsByTagName("script")[0];  | ||||
|   s.parentNode.insertBefore(hm, s); | ||||
| })(); | ||||
| </script>', | ||||
| 	'ad_top'=>0, | ||||
| 	'ad_top_info'=>' <!--广告 按照这个范例替换相应链接,如果想多几个广告,就多复制几个--> | ||||
| <div class="col-md-12" style="text-align: center;margin:2px;"> | ||||
|  | @ -82,5 +81,5 @@ var _hmt = _hmt || []; | |||
| 	'check_ip_model'=>0, | ||||
| 	'check_ip_list'=>'', | ||||
| 	'version'=>'2.4.8', | ||||
| 	'form'=>'2022-02-01 03:21:02' | ||||
| 	'form'=>'2022-02-02 03:25:00' | ||||
| 	); | ||||
|  | @ -78,22 +78,22 @@ function checkPASS($name) | |||
|             </tr> | ||||
|             <tr> | ||||
|                 <td>Fileinfo</td> | ||||
|                 <td>必须支持</td> | ||||
|                 <td>必须支持 | 安装后重启PHP</td> | ||||
|                 <td> <?php checkPASS($fileinfo); ?></td>
 | ||||
|             </tr> | ||||
|             <tr> | ||||
|                 <td>GD</td> | ||||
|                 <td>必须支持</td> | ||||
|                 <td>必须支持 | 安装后重启PHP</td> | ||||
|                 <td> <?php checkPASS($gd); ?></td>
 | ||||
|             </tr> | ||||
|             <tr> | ||||
|                 <td>openssl</td> | ||||
|                 <td>建议支持(用于删除文件,PHP>7.0)</td> | ||||
|                 <td>建议支持 | 生成加密删除url,需PHP>7.0</td> | ||||
|                 <td> <?php checkPASS($openssl); ?></td>
 | ||||
|             </tr> | ||||
|             <tr> | ||||
|                 <td>file.php</td> | ||||
|                 <td>0755可执行权限(非windows系统)</td> | ||||
|                 <td>0755可执行权限 | 非windows系统</td> | ||||
|                 <td> <?php checkPASS($file_php); ?></td>
 | ||||
|             </tr> | ||||
|             <tr> | ||||
|  | @ -103,7 +103,7 @@ function checkPASS($name) | |||
|             </tr> | ||||
|             <tr> | ||||
|                 <td>.user.ini</td> | ||||
|                 <td>防止跨目录访问和读取文件-><a href="https://lnmp.org/faq/lnmp-vhost-add-howto.html#user.ini" target="_blank">删除方法</a></td> | ||||
|                 <td>防跨目录读写文件 | 删除方法:<a href="https://lnmp.org/faq/lnmp-vhost-add-howto.html#user.ini" target="_blank"> LNMP</a> | <a href="https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=36605&page=1#pid122035" target="_blank">BT宝塔</a></td> | ||||
|                 <td><?php checkPASS($userINI); ?></td>
 | ||||
|             </tr> | ||||
|         </tbody> | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 icret
						icret