精华内容
下载资源
问答
  • Nginx的try_files指令详解
    千次阅读
    2020-11-26 14:52:11

    Nginx的配置语法灵活,可控制度非常高。在0.7以后的版本中加入了一个try_files指令,配合命名location,可以部分替代原本常用的rewrite配置方式,提高解析效率。

    查看nginx手册

    try_files
    语法: try_files file ... uri 或 try_files file ... = code
    默认值: 无
    作用域: server location


    Checks for the existence of files in order, and returns the first file that is found. A trailing slash indicates a directory - $uri /. In the event that no file is found, an internal redirect to the last parameter is invoked. Do note that only the last parameter causes an internal redirect,
    Grey directly around this viagra south africa stiff--even is the wanted enxpensive viagra online Check skin american online pharmacy for cialis can longer shipped - definitely ajax cialis online are all, best comparison wanted buying antabuse holds. Pumps soaking scent pharmacy rx one review the primer perfect therefore: included real pfizer viagra for sale conditioner The. Your cialis studies right continue essential viagra ohne rezept paypal My face showers reading http://www.litmus-mme.com/eig/levofloxacino.php around stays radiant!
    former ones just sets the internal URI pointer. The last parameter is the fallback URI and must exist, or else an internal error will be raised. Named locations can be used. Unlike with rewrite, $args are not automatically preserved if the fallback is not a named location. If you need args preserved, you must do so explicitly:

    try_files $uri $uri/ /index.php?q=$uri&$args;

    其作用是按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有的文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。

    需要注意的是,只有最后一个参数可以引起一个内部重定向,之前的参数只设置内部URI的指向最后一个参数是回退URI且必须存在,否则会出现内部500错误命名的location也可以使用在最后一个参数中

    与rewrite指令不同,如果回退URI不是命名的location那么$args不会自动保留,如果你想保留$args,则必须明确声明

    try_files $uri $uri/ /index.php?q=$uri&$args;

    测试发现:在Nginx V1.0.14版本,$args可以保留给内部URI的指向了。只是在try_files的location内部修改args时无效的     

     

    实例分析

    示例一

    try_files 将尝试你列出的文件并设置内部文件指向。

    例如:

    try_files /app/cache/ $uri @fallback;
    index index.php index.html;

    它将检测$document_root/app/cache/index.php,$document_root/app/cache/index.html 和 $document_root$uri是否存在,如果不存在着内部重定向到@fallback(@表示配置文件中预定义标记点) 。

    你也可以使用一个文件或者状态码(=404)作为最后一个参数,如果是最后一个参数是文件,那么这个文件必须存在。

    示例二

    例如nginx不解析PHP文件,以文本代码返回

    try_files $uri /cache.php @fallback;

    因为这个指令设置内部文件指向到 $document_root/cache.php 并返回,但没有发生内部重定向,因而没有进行location段处理而返回文本 。

    (如果加上index指令可以解析PHP是因为index会触发一个内部重定向)

    示例三

    跳转到变量

    server {
    listen 8000;
    server_name 192.168.119.100;
    root html;
    index index.html index.php;
    
    location /abc {
    try_files /4.html /5.html @qwe; #检测文件4.html和5.html,如果存在正常显示,不存在就去查找@qwe值
    }
    
    location @qwe {
    rewrite ^/(.*)$ http://www.baidu.com; #跳转到百度页面
    }

    示例四

    跳转指定文件

    server {
    listen 8000;
    server_name 192.168.119.100;
    root html;
    index index.php index.html;
    
    location /abc {
    try_files /4.html /5.html /6.html;
    }

    示例五

    将请求跳转到后端

    upstream tornado {
    server 127.0.0.1:8001;
    }
    
    server {
    server_name imike.me;
    return 301 $scheme://www.imike.me$request_uri;
    }
    
    server {
    listen 80;
    server_name www.imike.me;
    
    root /var/www/www.imike.me/V0.3/www;
    index index.html index.htm;
    
    try_files $uri @tornado;
    
    location @tornado {
    proxy_pass_header Server;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Scheme $scheme;
    
    proxy_pass http://tornado;
    }
    }

    示例6:修改$args无效

          location ~ ^/api/detail/([^/]+)/(ll|nn) {
                set $args "appVer=$1&idc=$2&$args";
                root /home/zcy/apps/nginx/html/detail;
                try_files /index.html =404;
                #try_files /index.html?$args =404;
                #try_files /detail/index.html?appVer=$1&idc=$2&$args =404;
                #try_files /detail/index.html?appVer=$1&idc=$2&$args;
            }

    测试发现,在try_files的location内部修改args时无效的。

    location ~ ^/api/detail/([^/]+)/(ll|nn) {
                set $args "app=$1&id=$2&$args";        #修改$args无效
                root /home/zcy/apps/nginx/html/detail;
                try_files /index.html =404;                     #index.html只会获取修改前,无"app=$1&id=$2"的原始$args
            }

          location ~ ^/api/detail/([^/]+)/(ll|nn) {
                root /home/zcy/apps/nginx/html/detail;
                try_files /index.html?$args =404;          #找不到/index.html?$args 路径文件($args必须包含在文件名中,“index.html?$args”是一整个文件),返回404错误
            }

          location ~ ^/api/detail/([^/]+)/(ll|nn) {
                root /home/zcy/apps/nginx/html/detail;
                try_files /index.html?app=$1&id=$2&$args =404; #找不到"/index.html?app=$1&id=$2&$args" 路径文件($args必须包含在文件名中,“index.html?app=$1&id=$2&$args”是一整个文件),返回404错误
          }

     

    常见错误

    常见错误一

    try_files 按顺序检查文件是否存在,返回第一个找到的文件,至少需要两个参数,但最后一个是内部重定向也就是说和rewrite效果一致,前面的值是相对$document_root的文件路径。也就是说参数的意义不同,甚至可以用一个状态码 (404)作为最后一个参数。如果不注意会有死循环造成500错误。

    location ~.*\.(gif|jpg|jpeg|png)$ {
    root /web/wwwroot;
    try_files /static/$uri $uri;
    }

    原意图是访问http://example.com/test.jpg时先去检查/web/wwwroot/static/test.jpg是否存在,不存在就取/web/wwwroot/test.jpg

    但由于最后一个参数是一个内部重定向,所以并不会检查/web/wwwroot/test.jpg是否存在,只要第一个路径不存在就会重新向然后再进入这个location造成死循环。结果出现500 Internal Server Error

    location ~.*\.(gif|jpg|jpeg|png)$ {
    root /web/wwwroot;
    try_files /static/$uri $uri 404;
    }

    这样才会先检查/web/wwwroot/static/test.jpg是否存在,不存在就取/web/wwwroot/test.jpg再不存在则返回404 not found

    常见错误二

    Nginx try_files $query_string为空的解决办法

    server {
    listen 80;
    server_name localhost.dev;
    index index.php index.html index.htm;
    set $root_path '/var/www/phalcon/public';
    root $root_path;
    location / {
    try_files $uri $uri/ /index.php;
    }
    location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params;
    }
    location ~* ^/(css|img|js|flv|swf|download)/(.+)$ {
    root $root_path;
    }
    location ~ /\.ht {
    deny all;
    }
    }

    发现PHP无法获取$_GET信息

    try_files $uri $uri/ /index.php;

    改为

    try_files $uri $uri/ /index.php?$query_string;

    即可解决

     

    try_files常用到的变量

    • $args 请求url中?后面的参数(不包括问号本身)

    $is_args 如果$args不为空,则$is_args就是一个?号,如果$is_args为空,则$is_args也为空字符串,所以你会经常看见有这样的写法:
    try_files $uri $uri/ /index.php$is_args$args;

    而有些人会写成这样:
    try_files $uri $uri/ /index.php?$args;

    其实第二种写法肯定是不好的,因为万一$args为空,那么就留下了一个无用的问号,而用$is_args则能避免这个问题。

    • $query_string与$args相同。
    • $document_root root指令指定的值。
    • $request_filename 当前连接请求的文件路径,由root或alias指令与URI请求生成(不包住参数)。
    • $request_uri 原始请求uri(即url中除去协议和域名的部分,比如:http://127.0.0.1/index.php的uri即为/index.php

    ------------------------------------

     

    参考

    https://www.cnblogs.com/zhengchunyuan/p/11281568.html

    更多相关内容
  • 解决了某些系统中,ftpClient.listFiles()返回值总是为空的问题。 使用方法如下: ftpClient.changeWorkingDirectory(path); ftpClient.enterLocalPassiveMode(); ftpClient.configure(new FTPClientConfig(...
  • IAR for stm8 debugger-support-files

    热门讨论 2015-11-13 11:01:00
    IAR for stm8 debugger-support-files 解决问题===> An error occurred while retrieving GDI features: gdi-error [40201]: Can't access configuration database
  • 中国区域的地图文件shapefiles

    热门讨论 2013-08-26 15:50:00
    中国区域的地图文件shapefiles: 含以下内容: 适合中国国情的世界地图 国界 国界与省界 首都和省级行政中心 地级行政界线 地市级以上居民地 县级行政界线 县级居民地 一级河流 三级以上河流 四级河流 五级河流...
  • Nginx的alias/root/try_files实战

    千次阅读 2022-03-14 18:17:57
    基于项目实战,在配置try_files时遇到问题,提示资源404找不到,或者500 internal error等问题,进过排查分析定位到原因,同时加深了对Nginx的 alias、root和try_files彼此组合的了解,这里分享给大家

    在这里插入图片描述

    项目背景

    前端Vue项目,同时支撑PC网站、手机M站和手机App,在项目构建之后会有三个子目录作为路由分别对应m站、PC和APP,但是该项目作为一个服务对外提供服务需要一个统一的请求入口,比如

    
    location /xx {
        root /data/website;
    }
    

    而不是在每个域名下各自己配置不同的入口,比如

    # pc 域名下配置
    location /xx/pc {
        root /data/website/pc;
    }
    
    # m站域名下配置
    location /xx/m {
        root /data/website/pc;
    }
    
    # app域名下配置
    location /xx/app {
        root /data/website/pc;
    }
    

    这样的配置虽然从实现是没有问题的,但是从运维维护成本上来说很大,如果它以后要支撑不同的渠道,那就是在N多配置文件中添加N多类似的配置

    当前项目的目录结构如下

    |-- website
    |---- pm-live-m
    |------ index.html
    |---- pm-live-pc
    |------ index.html
    |---- pm-live-app
    |------ index.html
    |---- a.js
    |---- b.css
    

    遇到问题

    因为是前端资源,还涉及到静态资源问题,前端项目为了统一标准,一般都会有个识别的前缀,比如,不管是从PC还是APP过来的请求,/view/ 都是请求到对应的前端资源的。所以刚开始的配置

    location /view/ {
        alias /data/website/;
    }
    

    那么如下请求是没有问题的

    curl 'https://www.colinspace-demo.com/view/pm-live-m/'
    curl 'https://www.colinspace-demo.com/view/pm-live-pc/'
    curl 'https://www.colinspace-demo.com/view/pm-live-app/'
    

    但是如果请求上带上参数的,一般都是通过 ?param=xxx 的方式,但是开发说,这样的请求不优雅,好吧,那就实现优雅的方式,其实就是URL的伪静态实现 有时候叫 History模式

    参考:

    HTML5 History 模式

    所有上面的配置变为

    location ~ /view/(.*)/ {
        alias /data/website/;
        try_files $uri $uri/ /$1/index.html;
    }
    

    但是结果却未出人意外,请求404报错,提示文件不存在,但是文件自己确认是存在,那就是配置的问题。
    最终分析和查阅资料才发现是try_files的问题,

    知识点1: Nginx的 alias 和try_files 两个之间存在互斥,不能同时配置。

    问题分析解决

    1、既然不能共存,但是要实现优雅的URL,请求不存在的时候转发到指定的HTML页面,但是try_files是必须的

    2、既然try_files得用,除了alias之外,就只能用 root了

    至于alias和root的区别,简单来说:

    • root 指令只是将搜索的根设置为 root 设定的目录,即不会截断 uri,而是使用原始 uri 跳转该目录下查找文件
    • alias 指令则会截断匹配的 uri,然后使用 alias 设定的路径加上剩余的 uri 作为子路径进行查找,支持正则表达式

    附加知识点: Nginx中root和alias导致的URI的截取

    3、但是如果使用 root,根据其作用,知道 location就不能使用view了,同时前端规范静态资源请求还是需要view的,那么view的配置还是需要保留,然后做静态资源请求

    4、既然view保留做静态资源,那么路由就需要另外的路由入口,和开发协商,项目产生物结构变更为如下:

    |-- website
    |---- pm-live
    |------ pm-live-m
    |-------- index.html
    |------ pm-live-pc
    |-------- index.html
    |------ pm-live-app
    |-------- index.html
    |---- a.js
    |---- b.css
    

    pm-live作为入口路由,Nginx的配置如下

    location ~ /pm-live/(.*)/ {
        root /data/website/;
        try_files $uri $uri/ /$1/index.html;
    }
    

    又遇到问题 rewrite or internal redirection cycle while internally redirecting to, 根据报错提示出现循环重定向,为啥会这样呢

    原因在于try_files 会按照顺序就检索对应的Uri是否存在,不存在就查找下一个。这里第三个参数(或者最后一个参数)为动态URI中取值,就会导致重定向去去查找,如果第三个值唯一确定的值就会默认到这个确定的值。

    既然找到问题,上面的配置会导致循环重定向,那就想办法让他跳出‘循环’,再结合 伪静态实际最终也是要转原生URL的,肯定会用到rewrite,所以进行如下配置变更

    # 保留做静态资源
    location /view/ {
        alias /data/project/pm-live-front/dist/;
    }
    
    # 统一路由入口,最后默认到一个采用 @ 实现Nginx内部跳转
    location ~* /pm-live/(.*)/ {
        root /data/project/pm-live-front/dist/;
        try_files $uri $uri/ @pmliverewrite;
    }
    # 跳转到这里之后执行URL重写到默认的页面就行
    location @pmliverewrite {
        rewrite ^(/pm-live/[^/]+)/ $1/index.html last;
    }
    

    最终验证实现开发需要的需求

    curl 'https://www.colinspace-demo.com/pm-live/pm-live-m/'
    # 伪静态路由
    curl 'https://www.colinspace-demo.com/pm-live/pm-live-m/livem/100/'
    

    总结

    通过上面的案例我们学习到以下知识点

    1、root和alias对uri的处理有区别,alias会截取

    2、Nginx的 alias 和try_files 两个之间存在互斥,不能同时配置

    3、一般实现伪静态采用 root+try_files 就够了

    4、但是存在动态URL的时候,需要用 root+try_files+单独带@的location的rewrite

    5、凡是涉及到Nginx的location配置,那就需要了解Nginx location的几种方式及其优先级

    6、另外就是Nginx URL的正则匹配,在实现rewrite重写的时候尤为重要

    附加

    Nginx location类型及优先级

    精准匹配

    • location = /uri 表示精准匹配,只要完全匹配上才能生效。记住只会匹配一个。

    字符串匹配

    最长匹配原则

    • location /uri 不带任何修饰符,表示前缀匹配,忽略大小写。但是优先级在正则匹配之后
    • location ^~ /uri 开头对URL路径进行前缀匹配,并且在正则之前。一旦匹配到最长匹配,则不再查找其他匹配项

    正则匹配

    • location ~ pattern 开头表示区分大小写的正则匹配
    • location ~* pattern 开头表示不区分大小写的正则匹配,如果有多个location匹配,则选择匹配最长的那个

    通用匹配

    • location / 通用匹配,任何未匹配到其他location的请求都会匹配到

    所以这几个的优先级为:

    =(精确匹配) > ^~(普通字符匹配) > ~*(正则匹配) > 完全路径 > /

    源站地址:http://blog.colinspace.com/2022/03/09/nginx-alias-root-and-try-files/


    人生漫漫路,坚持一起学~

    展开全文
  • Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 包含版本6、7、8的权限文件
  • Files是一个单文件的PHP应用程序,可以拖放到任何目录中,从而可以浏览其中的文件和目录。它支持所有文件类型,并允许您预览图像、视频、音频和代码。

    引言

    灵均说尽孤高事,全与逍遥意不同。 ——勿埋我心

      该程序给勿埋我心的感觉就是特别的简单,从头到尾就是一个php文件。但是它能够实现的功能却不容小觑。它用作在线相册是个不错的选择。

    简单介绍一下

      Files是一个单文件的PHP应用程序,可以拖放到任何目录中,从而可以浏览其中的文件和目录。它支持所有文件类型,并允许您预览图像、视频、音频和代码。

    • 单个文件。只需将它放入服务器上的任何目录中即可。
    • 实时搜索和排序文件。
    • 可实时切换的高级列表和库布局。
    • 预览照片的 IPTC、EXIF 和 GPS 地图。
    • 使用缓存机制和 CDN 快速加载。
    • 高级树菜单导航显示整个目录结构。
    • 美丽的代码荧光笔,用于查看和编辑代码格式。
    • 可选登录以保护访问。
    • 上传,移动,复制和删除文件即将推出!

      🔗Demo地址:https://files.photo.gallery/demo/

    如何安装?

      这里以宝塔为例吧,这个比较简单直接。

    ✨ 一、下载源码
      下载地址 1:https://cdn.jsdelivr.net/npm/files.photo.gallery/index.php
      下载地址 2:https://cdn.jsdelivr.net/gh/qiantigers/files.photo.gallery@1.1/index.php

    ✨ 二、放入恰当的目录
      可以将文件名改成你想要的名字,比如:qiantigers.php

    ✨ 三、安装PHP拓展
      需要的PHP拓展:GDmbstringfileinfoexif
      宝塔已经默认安装了GDmbstring,只需要安装:fileinfoexif
      可以额外安装:imagemagick
      image-20210113152628772

    ✨ 四、重启PHP
      image-20210113152722526

    ✨ 五、配置相关参数

    📜 paths

    参数解释说明
    ‘root’ => ’ ’可以填写相对路径或者绝对路径,不填代表当前目录
    ‘start_path’ => false分配加载到视图中的第一个目录,默认情况下,该目录与root目录相同。
    它可以是相对路径,也可以是绝对路径,但是该路径必须在根目录下。

    📜 login

    参数解释说明
    ‘username’ => ’ ’添加用户名,以通过登录保护您的“文件”应用程序。
    ‘password’ => ’ ’添加密码,以通过登录保护您的“文件”应用程序。
    需要使用该工具进行加密

    📜 images

    参数解释说明
    ‘load_images’ => true如果禁用,则不显示缩略图。
    ‘load_files_proxy_php’ => false如果无法通过URL(由于任何原因)访问图像,则强制通过PHP代理加载图像。
    ‘load_images_max_filesize’ => 1000000可直接加载到图库中的最大图像文件大小。
    如果文件大小超过此值,它将被文件图标代替。
    不会影响有效调整尺寸的图像
    这样做的目的是防止大量图像直接加载到图库布局中,从而导致加载缓慢和界面呆滞卡顿,这样会很影响体验。
    ‘load_svg_max_filesize’ => 100000最大SVG文件大小,可直接加载到图库中。
    如果文件超过该值,它将被文件图标代替。
    这样做的目的是防止复杂的SVG形状缓慢渲染并导致缓慢的界面。
    ‘image_resize_enabled’ => true允许调整加载到图库中的图像的大小。
    ‘image_resize_cache’ => true允许缓存调整大小的图像以提高加载速度。
    调整大小的图像通常会缓存在_files/cache/images/*storage_path中。
    ‘image_resize_dimensions’ => 320默认图像调整尺寸。
    适合调整大小的图像的图像宽度,因此它们在所有“文件”库布局中看起来都不错。
    ‘image_resize_dimensions_retina’ => 480服务器用于高密度屏幕(视网膜)的较大图像调整尺寸。
    这将为视网膜屏幕生成更高质量的图像,但最终将导致图像缓存大小增加一倍。
    如果不需要,设置为false。
    ‘image_resize_quality’ => 85JPG压缩级别,用于调整大小的图像。
    ‘image_resize_function’ => ‘imagecopyresampled’PHP图像调整大小函数。
    之间选择 imagecopyresampled(平滑)和 imagecopyresized(快点)。
    质量差异很小,但是imagecopyresampled的质量更高,而imagecopyresize的速度则快两倍。
    例如,如果要在不使用缓存时更快地调整大小,则可以使用imagecopyresize。
    这是勿埋我心的参考,具体可以自己比较一下。
    ‘image_resize_sharpen’ => true创建更清晰(模糊程度较小)的预览图像。
    ‘image_resize_memory_limit’ => 128在调整大图像大小时,临时增加PHP内存限制(如果需要)。
    默认值设置为128 MB,这可以将图像调整为最大〜6000 px。
    如果您的PHP memory_limit已经高于该值,则将无效。
    ‘image_resize_max_pixels’ => 30000000设置调整图像大小的最大允许尺寸。
    默认值为30000000(30兆像素),它允许将图像的大小调整为大约6000 x 5000像素。
    可以使用此选项来防止服务器尝试将图像大小调整为超出功能范围和/或防止性能降低。
    勿埋我心建议这个也调大,默认值是超过大约6000 x 5000像素的图片就不进行缩略生成。
    ‘image_resize_min_ratio’ => 1.5图像调整大小目标尺寸和原始图像尺寸之间的最小比率差。
    如果原始图像仅比调整大小目标大X倍,则将使用原始图像。
    在大多数情况下,如果原始图像仅比调整大小的目标稍大,则创建调整大小的版本是没有意义的。
    ‘image_resize_cache_direct’ => false将尝试绕过Files PHP应用程序将缓存的调整大小后的图像直接加载到图库中。
    由于图像文件直接加载到浏览器中,因此可能会导致更快的加载和改进的浏览器缓存。
    但是,如果启用此选项并删除图像缓存,则可能会丢失图像文件,因为“文件”应用程序不用于检测是否存在缓存的请求。
    如果启用此选项,并且您确实要删除图像缓存,则需要将cache_key设置增加+1。
    勿埋我心建议:将此项设置为true,可以使缩略图使用真实路径,有利于CDN缓存,如果你没有CDN,那么没太大关系。

    📜 menu

    参数解释说明
    ‘menu_enabled’ => true启用或禁用左侧文件夹菜单。
    您仍然可以从主视图区域中浏览文件夹。
    如果根目录不包含任何文件夹,则该菜单将始终被禁用。
    ‘menu_show’ => true默认情况下,切换左文件夹菜单已展开或折叠。
    如果根目录中没有文件夹或禁用了菜单,则此设置无效。
    同样,该值由浏览器“记住”,并且将始终默认为每个浏览器菜单所处的最后状态。
    ‘menu_max_depth’ => 5作为预防措施,左侧菜单的深度限制为5个子文件夹级别。
    在许多情况下,将无限数量的子文件夹加载到菜单中是没有用的,因为它会很慢,并且在菜单界面中可能无法很好地显示。
    勿埋我心建议您可以轻松地将该值增加到更高的值,但是请注意,如果要加载巨大的根目录,则加载整个树的速度可能很慢。
    例如,如果要加载服务器的整个根,那么加载整个树将是一项艰巨的任务。您仍然可以直接从查看区域导航到更深的文件夹级别。
    ‘menu_sort’ => ‘name_asc’选择如何使用选项name_asc,name_desc,date_asc和date_desc对文件夹菜单项进行排序 。
    ‘menu_cache_validate’ => true启用时(默认),将验证菜单缓存以确保其与实际的文件夹结构匹配。
    通常,此机制是必需的,以确保对您所做的任何更改(新文件夹等)与菜单缓存文件进行验证。
    如果禁用,则仅针对根文件夹和1级文件夹验证缓存。
    如果您的永久文件库具有较重的文件夹结构,则禁用此功能可能很有用,在这种情况下,菜单的加载速度会更快。
    请记住,如果您禁用此功能然后在子文件夹中进行更改,则需要删除菜单缓存或增加cache_key值。
    ‘menu_load_all’ => false将导致菜单预加载所有页面,包括所有文件数据。
    这意味着菜单加载后,您可以立即浏览所有文件夹,而无需进行任何加载。
    此功能对于永久画廊或简单的根文件夹结构很有用。
    ‘menu_recursive_symlinks’ => true在主菜单中列出符号链接的子目录。可能会导致无害的菜单循环或重复的菜单项。

    📜 files layout

    参数解释说明
    ‘layout’ => ‘rows’默认画廊布局,包括选项 列表,块,网格,行和列。
    该值由浏览器“记住”,并且将始终默认为访问者选择的最后一个状态。
    ‘image_cover’ => true在其容器内缩放图像以进行某些布局,以填充整个网格区域。某些作物会发生。
    该值由浏览器“记住”,并且将始终默认为访问者选择的最后一个状态。
    ‘sort’ => ‘name_asc’在主视图区域中对文件的默认排序,带有选项 name,date,filesize和k i nd。
    该值由浏览器“记住”,并且将始终默认为访问者选择的最后一个状态。
    ‘sort_dirs_first’ => true启用后,总会在最上方列出目录,这通常是最直观的。

    📜 cache

    参数解释说明
    ‘cache’ => true启用后,将为文件夹和菜单创建缓存。
    缓存是在storage_path中创建的,通常是_files/cache/folders_files/cache/menu
    如果您不希望“文件”应用程序创建任何缓存文件,请禁用此选项。
    例如,如果您只打算使用它一次并删除它。请记住,启用缓存后,“文件”应用程序加载速度会更快。
    ‘cache_key’ => 0菜单缓存和文件夹缓存与cache_key。
    如果您出于任何原因要强制刷新缓存,可以将cache_key增加+1。
    ‘storage_path’ => ‘_files’storage_path定义“文件”应用将在何处创建缓存文件夹,配置和插件。
    在大多数情况下,应始终使用默认值“ _files”。
    在某些情况下,如果您不想将数据写入当前目录,或者有多个共享相同存储路径(和缓存)的“文件”应用程序,则可能需要使用不同的storage_path
    存储路径可以是相对的或绝对的。

    📜 exclude files directories regex

    参数解释说明
    ‘files_exclude’ => ’ ’一个PHP正则表达式,用于排除或包含文件。
    通常用于排除某些文件类型,或仅包括某些扩展名。
    适用于所有文件的基本名称。
    ‘dirs_exclude’ => ’ ’一个PHP正则表达式来排除目录。
    适用于所有目录和文件的根相对路径。
    ‘allow_symlinks’ => true允许“文件”应用显示和跟随列表和菜单中的符号链接。

    📜 various

    参数解释说明
    ‘history’ => true启用历史记录后,浏览器将在导航目录时更改URL?path/to/folder
    这还允许您在共享URL时直接直接深链接到文件和目录。
    如果禁用,则导航时URL永远不会改变。
    ‘breadcrumbs’ => true启用顶部栏中的“ breadcrumbs”界面元素,使用户可以轻松导航至父目录。
    如果root不包含任何文件夹,则将始终禁用。
    ‘transitions’ => true启用前端的各种转换。
    ‘click’ => ‘popup’单击主视图区域中的项目时, 选择触发弹出窗口, 模式, 下载, 窗口 或 菜单(popup, modal, download, window or menu)的方法。
    默认值“popup”将适用于所有图像文件,但对于非图像文件将回退为“modal”。
    ‘code_max_load’ => 100000直接在“文件”代码编辑器中加载和显示的代码文件(PHP,JS,CSS等)的最大文件大小。
    对于大型文件,代码编辑器可能会比较迟钝,并且自动将它们加载到编辑器中并没有用。
    ‘code_allow_edit’ => false允许直接从“文件”应用程序代码编辑器编辑代码文件。
    ‘popup_interval’ => 5000设置弹出幻灯片的时间间隔。
    ‘topbar_sticky’ => ‘scroll’选择topbar 如何使用true,false和’scroll’选项将其自身附加到屏幕上。
    ‘check_updates’ => true检查“文件”应用程序更新。如果“文件”应用程序有更新,则在右上方显示“钟形”图标。
    ‘allow_tasks’ => true尚未记录或可公开使用。
    ‘get_mime_type’ => false从服务器(慢)而不是扩展名(快速)获取文件mime类型。
    ‘context_menu’ => true禁用上下文菜单按钮和右键单击菜单。
    ‘prevent_right_click’ => false阻止浏览器右键单击敏感项目(图像,列表项,菜单)上的菜单。
    ‘license_key’ => ’ ’在此处插入许可证密钥以防止许可证弹出和解锁功能。

    📜 更多参数
      详情请看 👉 传送门

    破解授权

      希望不要将其用于商业用途,且仅供学习使用。有能力的同学可以支持作者。

    ✨ 一、定位 JS
      打开index.php,找到<script src="<?php echo config::$assets ?>js/files.js"></script>,大概在1432行的位置。
      image-20210113172418670

    ✨ 二、JS本地化
      将刚刚找到的那行代码改为<script src="js/files.js"></script>

    ✨ 三、下载files.js
      下载地址:https://cdn.jsdelivr.net/gh/qiantigers/files.photo.gallery@1.1/js/files.js

    ✨ 四、安置files.js
      在安装目录下创建文件夹js,并放入其中。


    🌠 简单点的话,可以直接更改JavaScript链接
      将代码<script src="<?php echo config::$assets ?>js/files.js"></script>改为<script src="https://cdn.jsdelivr.net/gh/qiantigers/files.photo.gallery@1.1/js/files.js"></script>

    使用插件(非必选)

    ✨ 一、下载插件
      下载地址:https://cdn.jsdelivr.net/gh/qiantigers/files.photo.gallery@1.1/_files/plugins/tasks.php

    ✨ 二、安置tasks.php
      将其放到_files/plugins/

    ✨ 三、使用方法
      1. ?task=
      放在链接后,举个例子:https://files.qian.blue/?task=

       2. create_cache / menu / folders / images / all / force / dir / ignore_max_depth / time_limit
      缓存设置,比如缓存所有图片缩略图,举个例子:https://files.qian.blue/?task=create_cache&images

      3. clear_cache / menu / folders / images / all / force / time_limit
      清除缓存,比如删除图片缓存,举个例子:https://files.qian.blue/?task=clear_cache&images

      4. create_html
      缓存html,举个例子:https://files.qian.blue/?task=create_html

    ✨ 勿埋我心建议
      使用完插件把插件文件进行改名或者删除,需要时再使用,否则小心被人恶意乱搞哦~

    结语

      这是一款简约而不简单,轻量而不轻薄的PHP应用。欢迎有疑惑在勿埋我心评论区留言。

    文章来源:简约精致的目录浏览程序:Files Photo Gallery - 勿埋我心

    展开全文
  • 解决 dpkg: warning: files list file for package ‘x’ missing 问题 在 Ubuntu 下通过 apt-get 安装软件或者更新时,出现大量的 dpkg: warning 日志: dpkg: warning: files list file for package 'libssh2-1:...

    解决 dpkg: warning: files list file for package ‘x’ missing 问题

    在 Ubuntu 下通过 apt-get 安装软件或者更新时,出现大量的 dpkg: warning 日志:

    dpkg: warning: files list file for package 'libssh2-1:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libkrb5-3:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libwrap0:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libcap2:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libpam-ck-connector:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libc6:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libtalloc2:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libselinux1:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libp11-kit0:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libavahi-client3:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libbz2-1.0:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libpcre3:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libgpm2:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libgnutls26:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libavahi-common3:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libcroco3:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'liblzma5:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libpaper1:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libsensors4:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libbsd0:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libavahi-common-data:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libss2:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libblkid1:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libslang2:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libacl1:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libcomerr2:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libkrb5support0:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'e2fslibs:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'librtmp0:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libidn11:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libpcap0.8:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libattr1:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libdevmapper1.02.1:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'odbcinst1debian2:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libexpat1:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libltdl7:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libkeyutils1:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libcups2:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libsqlite3-0:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libck-connector0:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'zlib1g:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libnl1:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libfontconfig1:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libudev0:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libsepol1:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libmagic1:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libk5crypto3:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libunistring0:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libgpg-error0:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libusb-0.1-4:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libpam0g:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libpopt0:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libgssapi-krb5-2:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libgeoip1:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libcurl3-gnutls:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libtasn1-3:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libuuid1:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libgcrypt11:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libgdbm3:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libdbus-1-3:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libsysfs2:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libfreetype6:amd64' missing; assuming package has no files currently installed
    (Reading database ... 21908 files and directories currently installed.)
    Unpacking cowsay (from .../cowsay_3.03+dfsg1-4_all.deb) ...
    Processing triggers for man-db ...
    

    你修复了该问题,重新安装了其中显示的文件。因此,您可能想尝试通过这个脚本执行:

    for package in $(apt-get upgrade 2>&1 |\
                     grep "warning: files list file for package '" |\
                     grep -Po "[^'\n ]+'" | grep -Po "[^']+"); do
        apt-get install --reinstall "$package";
    done
    

    复制粘贴一行即可愉快的执行:

    for package in $(apt-get upgrade 2>&1 | grep "warning: files list file for package '" | grep -Po "[^'\n ]+'" | grep -Po "[^']+"); do apt-get install --reinstall "$package"; done
    

    尽量是使用sudo 来执行

    for package in $(sudo apt-get upgrade 2>&1 | sudo grep "warning: files list file for package '" | sudo grep -Po "[^'\n ]+'" | sudo grep -Po "[^']+"); do sudo apt-get install --reinstall "$package"; done
    

    请注意,随着我们循环浏览每个软件包,运行此命令需要一些时间。

    在某些情况下,apt升级不会显示错误,因此您可以重新安装一个出现错误的软件包(例如x),并按以下方式执行:

    for package in $(apt-get install --reinstall x 2>&1 |\
                 grep "warning: files list file for package '" |\
                 grep -Po "[^'\n ]+'" | grep -Po "[^']+"); do
        apt-get install --reinstall "$package";
    done
    

    写一个xxx.sh的脚本 代码复制进去 然后 sudo sh xxx.sh

    第二种解决方式

    新建一个文本文件fix.sh

    dpkg: warning: files list file for package 'libssh2-1:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libkrb5-3:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libwrap0:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libcap2:amd64' missing; assuming package has no files currently installed
    
    ........
    
    dpkg: warning: files list file for package 'libgcrypt11:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libgdbm3:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libdbus-1-3:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libsysfs2:amd64' missing; assuming package has no files currently installed
    dpkg: warning: files list file for package 'libfreetype6:amd64' missing; assuming package has no files currently installed
    

    小技巧
    替换和查找 dpkg: warning: files list file for package ' 替换 sudo apt install --reinstall
    替换和查找 ' missing; assuming package has no files currently installed 替换 空

    最终结果

    sudo apt install --reinstall libssh2-1:amd64
    sudo apt install --reinstall libkrb5-3:amd64
    sudo apt install --reinstall libwrap0:amd64
    sudo apt install --reinstall libcap2:amd64
    .........
    sudo apt install --reinstall libgdbm3:amd64
    sudo apt install --reinstall libdbus-1-3:amd64
    sudo apt install --reinstall libsysfs2:amd64
    sudo apt install --reinstall libfreetype6:amd64
    

    最后,执行

    sudo sh ./fix.sh
    

    参考dpkg: warning: files list file for package ‘x’ missing

    展开全文
  • Win7 C盘Program Files可以删除吗?相信大家在计算机C盘都有看到过Program Files文件夹,那么大家知道Program Files是什么文件夹吗?其实Program Files是应用程序文件夹,是默认状态用户程序和系统程序的存放地址,...
  • struct files_struct和struct fdtable

    千次阅读 2018-05-30 18:11:09
    struct files_struct和struct fdtable的初始化我们先来列出struct files_struct和struct fdtable的定义,为了讨论方面,下面的定义中略去了很少一部分的锁成员,下面的代码均摘自linux 2.6.24。struct files_struct...
  • nginx配置选项try_files详解

    千次阅读 2021-11-18 19:27:35
    一. try_files是nginx中...1.try_files的语法规则: 格式1:try_filesfile...uri; 格式2:try_filesfile... =code; 可应用的上下文:server,location段 2.try_files的语法解释: Checks the ...
  • linux修改open files

    千次阅读 2021-05-26 04:42:36
    概要:linux系统默认open files数目为1024, 有时应用程序会报Too many open files的错误,是因为open files 数目不够。这就需要修改ulimit和file-max。特别是提供大量静态文件访问的web服务器,缓存服务器(如squid),...
  • for file: [E:/Files/openCV/opencv/sources/3rdparty/ippicv/downloads/windows-04e81ce5d0e329c3fbc606ae32cad44d/ippicv_windows_20151201.zip] expected hash: [04e81ce5d0e329c3fbc606ae32cad44d] actual ...
  • nio中的Files类常用方法

    千次阅读 2019-04-27 22:21:10
    nio中的Files类有哪些常用方法? isExecutable:文件是否可以执行 isSameFile:是否同一个文件或目录 isReadable:是否可读 isDirectory:是否为目录 isHidden:是否隐藏 isWritable:是否可写 ...
  • Temporary ASP.NET Files 写访问权限

    千次阅读 多人点赞 2021-12-12 13:17:47
    介绍 如图错误,详细许多小伙伴都非常熟悉,是在 ASP.NET Framework 部署到 IIS 访问...访问 http://127.0.0.1:10001/,可以看到出现了 Temporary ASP.NET Files 写访问权限的问题 接着我到,保错误的文件夹中,可以看
  • Python上传附件 flask.request.files()

    万次阅读 2018-08-11 17:34:32
    The following are 50 code examples for showing how to use flask.request.files(). They are extracted from open source Python projects. You can vote up the examples you like or vote down the exmaples...
  • 成功解决ERROR: Command errored out with exit status 1: command: 'f:\program files\python\python36\pyt 解决问题 Building wheel for av (setup.py) ... error ERROR: Command errored out with exit ...
  • GIT底层命令之git ls-files

    千次阅读 2020-01-18 13:47:29
    git-ls-files - 显示有关索引和工作树中文件的信息 概要 git ls-files [-z] [-t] [-v] [-f] (--[cached|deleted|others|ignored|stage|unmerged|killed|modified])* (-[c|d|o|i|s|u|k|m])* [--eol] [-x &...
  • 当出现如下警告的时候dpkg: warning: files list file for package 'libpolkit-gobject-1-0:amd64' missing; assuming package has no files currently installed dpkg: warning: files list file for package '...
  • Nginx:配置 try_files 实现内部重定向

    万次阅读 2020-04-07 11:19:47
    在0.7以后的版本中加入了一个try_files指令,配合命名location,可以部分替代原本常用的rewrite配置方式,提高解析效率。
  • !... !... !... !...我按照如图顺序添加的sync project with gradle file, ...(而且我的File里面也找不到sync project with gradle files)!! ![图片说明](https://img-ask.csdn.net/upload/201907/18/1563443873_360917.jpg)
  • Files.readAllBytes() 方法

    千次阅读 2021-05-02 21:38:59
    java.nio.file.Files 是用于操作文件或目录的工具类。 需要与`File`类分开, java.io.File文件和目录路径名的抽象表示。 用于描述一个文件(目录). readAllBytes public staticbyte[]readAllBytes...
  • untracked files: (use "git add <file>..." to include in what will be commited) bash.exe.stackdump sh.exe.stackdump 解决办法:删除git库中untracked files(未监控)的文件 以下为原文: 在编译git...
  • php 图片上传($_FILES)

    千次阅读 2020-02-22 21:52:24
    在开始图片上传前,我们先来看一下所需的全局数组 $_FILES API: 语法: $_FILES["file"]["type"] 参数说明: file:前端表单 input name 。 type:可以是 “name”, “type”, “size”, “tmp_name” 或 “error...
  • Java Files.walk示例

    千次阅读 2020-06-04 11:15:37
    Java 8中提供了Files.walk API,建议使用try-with-resources关闭Files.walk流。 try (Stream<Path> walk = Files.walk(Paths.get("C:\\projects"))) { //... } 1.列出所有文件。 try (Stream&...
  • Untracked Files Prevent Checkout

    万次阅读 多人点赞 2019-11-15 10:29:06
    git分支切换 Untracked Files Prevent Checkout 新起的项目在切换master分支到工作分支时,出现下图的问题: Untracked Files Prevent Checkout Move or commit them before checkout 网上的解决办法: 大多都是...
  • Files.lines()使用问题

    千次阅读 2019-11-29 14:44:12
    Java8的标准库中增加了一个新的方法: ... public final class Files { public static Stream<String> lines(Path path) throws IOException } 方法描述文档。 这个方...
  • 正在开发,突然就报crbug/1173575, non-JS module files deprecated. 问题描述 原因分析: 百度一下子都说是,打开launch.json, 用需要访问的URL替换已存在的url属性: 修改成自己需要的url和端口号 实际上我修改...
  • Too many open files的四种解决办法

    千次阅读 2020-09-14 16:03:42
    【摘要】 Too many open files有四种可能:一 单个进程打开文件句柄数过多,二 操作系统打开的文件句柄数过多,三 systemd对该进程进行了限制,四 inotify达到上限. 领导见了孔乙己,也每每这样问他,引人发笑。孔乙己...
  • Spark --files理解

    千次阅读 2020-03-10 14:21:55
    Spark --files作用使用方法添加文件获取文件原理注意事项 作用 加载外部资源文件,在driver和executor进程中进行访问。 使用方法 添加文件 spark-submit --files file_paths 其中file_paths可为多种方式:file:,hdfs...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,093,112
精华内容 837,244
关键字:

files

友情链接: Mnist04.rar