封装函数

  1. <?php
  2. function uploadFile($fileInfo,$uploadPath='./uploads',$flag=true,$allowExt=['jpg','jpeg','png','wbmp','gif'],$maxSize=(5*1024*1024)){
  3. if($fileInfo['error'] == 0){
  4. $arr = explode('.',$fileInfo['name']);
  5. $ext = end($arr);
  6. $prefix = array_shift($arr);
  7. //检测文件类型
  8. if(!in_array($ext,$allowExt)){
  9. $res['error'] = '非法的文件类型';
  10. }
  11. //检测文件大小
  12. if($fileInfo['size'] > $maxSize){
  13. $res['error'] ='文件大小超过限制';
  14. }
  15. //检测文件名是否合法
  16. if($flag){
  17. if(!getimagesize($fileInfo['tmp_name'])){
  18. $res['error'] ='文件不是真实图片';
  19. }
  20. }
  21. //检测文件是否通过http post上传
  22. if(!is_uploaded_file($fileInfo['tmp_name'])){
  23. $res['error'] ='上传方式错误:请使用http post 方式上传';
  24. }
  25. if(!empty($res)) return;
  26. if(!file_exists($uploadPath)){
  27. mkdir($uploadPath,0770,true);
  28. chmod($uploadPath,0770);
  29. }
  30. // 根据$prefix time() 生成唯一图片地址
  31. $des = $uploadPath.'/'.md5($prefix.time()).'.'.$ext;
  32. $result = move_uploaded_file($fileInfo['tmp_name'],$des);
  33. if(!$result)
  34. {
  35. $res['error'] = '文件移动失败';
  36. }else{
  37. $res['info'] = $fileInfo['name'] . '上传成功';
  38. $res['fileRealPath'] = $des;
  39. }
  40. return $res;
  41. }else{
  42. switch ($fileInfo['error']){
  43. case 1:
  44. $res['error'] = '文件超过php.ini中upload_max_fileize的值';
  45. break;
  46. case 2:
  47. $res['error'] = '文件大小超过表单中MAX_FILE_SIZE的指定值';
  48. break;
  49. case 3:
  50. $res['error'] = '文件只有部分被上传';
  51. break;
  52. case 4:
  53. $res['error'] = '文件没有被上传';
  54. break;
  55. case 6:
  56. $res['error'] = '找不到临时文件夹';
  57. break;
  58. default:
  59. $res['error'] = '系统错误';
  60. break;
  61. }
  62. }
  63. }
  64. function upload($fileInfo)
  65. {
  66. foreach($fileInfo as $k=>$v)
  67. {
  68. foreach($v as $kk=>$vv)
  69. {
  70. if($kk == $kk )
  71. {
  72. $files[$kk][$k] = $vv;
  73. }
  74. }
  75. }
  76. return $files;
  77. }

请求函数的

  1. <?php
  2. require 'common.php';
  3. $files = upload($_FILES['my_file']);
  4. foreach ($files as $k){
  5. $res[]['msg'] = uploadFile($k)['fileRealPath'];
  6. }
  7. print_r($res);

设置错误显示

1,Linux 服务器下的设置
(1)编辑 php.ini,将 log_errors 设置为 on:

  1. log_errors = On

(2)保存后重启 apache 即可。

2,Windows 服务器下的设置
(1)同样是编辑 php.ini。只不过除了将 log_errors 设置为 on 外,还需要定义 error_log 的路径及文件名。这样错误日志就会保存到指定的文件中。

  1. log_errors = On
  2. error_log = d:/php_log/errors.log

特别要注意的是,日志保存目录需要授予 php 标识用户的修改权限,否则日志文件无法生成。

手动将错误信息记录到日志文件中

经过上面的配置后,除了运行时产生的所有错误会自动记录到日志文件中外,我们也可以在代码中使用 error_log() 方法主动将一些信息写到日志文件中,方便定位问题。

  1. <?
  2. error_log("Mysql数据库不可用!", 0); //将错误消息写入到操作系统日志中
  3. ?>

更多相关文章

  1. 命名空间自动加载进阶与mysql初体验
  2. PHP-02外部文件引入require与数组遍历
  3. oracle数据库无法打开修复过程
  4. 关于PHP递归函数以及处理多维数组和目录文件实例
  5. 完成一个用户注册页面, 用xmind文件中总结的字符串函数库,对表单
  6. gitignore的一些语法
  7. MVC-安装jQuery的npm和yarn的方法
  8. vue 前端打包 chunk-vendors文件过大的问题
  9. vue-cli打包后vendor.js文件太大

随机推荐

  1. 独立的android开发者开发app如何盈利
  2. Android知识图谱:我们到底需要学习哪些And
  3. Android最佳实践(六)之扫描二维码模块
  4. android app的类响应式设计
  5. Android Studio无法加载API帮助文档问题
  6. Unity3D 调用Android的提供的接口
  7. [自定义控件]android自定义view实战之太
  8. Android SDK 2.0安装(配置图文教程)
  9. Android 5.1和Android 5.0相比有哪些变化
  10. android > 修改Android工程版本