纳瓦尔艺术免安装绿色中文版
2.82G · 2025-10-24
完成本课程后,学习者将能够:
open_basedir在早期的移动互联网兴起的时候,Css + Html5 + Javascript是不能调用操作系统的底层能力、比如想调用手机的通讯录、摄像头、无法直接操作本地文件系统这种功能是没办法实现的,无法深度利用设备传感器(如高精度陀螺仪、气压计),或实现后台 GPS 定位等原生级功能,浏览器的安全沙箱机制,严格限制了 Web 页面直接访问手机的底层系统能力。
第二个就是用户体验与性能的短板纯 H5 页面的渲染性能、动画流畅度,以及复杂交互的响应速度,和原生应用(Native App)存在明显差距,原生App开发成本比较高,Hybrid的架构方案就应运而生了,所以说,智慧都属于劳动人民啊!
Hybrid的架构层
开发小程序,需要审核一个小程序,个人和企业都可以申请,申请的方式和流程也相对简单,个人申请能开发的品类较少,企业品类较多,如果自己在本地开发进行学习,申请个人的就可以。
在管理->开发管理,可以看见小程序AppID,小程序代码上传需要设置白名单、服务器域名和业务域名,加入开发者,下载小程序开发者工具就可以编写代码了,享受编程的快乐了,还有一点需要注意的是之前的都是用js方式编程,现在官方生成的都是ts格式的,在用法上有一点不同,但大同小异。
小程序的目录如下:
package.json 项目依赖配置文件,用于管理 Node.js 依赖包(如开发工具、第三方库),定义脚本命令(如构建、运行脚本),以及项目基本信息(名称、版本等)。类似前端项目的依赖管理核心文件。
project.config.json小程序项目全局配置文件,用于保存项目的公共配置(团队共享)例如:项目名称、appid、编译配置、页面路径配置等
project.private.config.json项目私有配置文件,用于保存个人开发相关的配置(不共享),可覆盖project.config.json中的配置。
tsconfig.json:TypeScript 编译配置文件,指定 TypeScript 的编译规则
typings/ :TypeScript 类型声明目录,用于存放项目所需的类型定义文件(.d.ts),解决 TS 对 “非 TS 模块”(如微信小程序 API、第三方 JS 库)的类型识别问题,避免类型报错。
miniprogram/ 目录(小程序核心目录):小程序的主运行目录,包含所有与小程序功能直接相关的代码(页面、全局配置、样式等)。
global.css)。支持微信小程序扩展的样式语法(如rpx自适应单位),页面样式可覆盖全局样式。├── miniprogram
│ ├── app.json
│ ├── app.ts
│ ├── app.wxss
│ ├── pages
│ │ ├── index
│ │ └── logs
│ └── utils
│ └── util.ts
├── package.json
├── project.config.json
├── project.private.config.json
├── tsconfig.json
└── typings
├── index.d.ts
└── types
├── index.d.ts
└── wx
小程序必须要运行在Https协议上进行安全传输,需要在本地生成ssl证书,比如我的域名是shop.work.com,存放路径是/root/ssl/shop.work.com/,使用Openssl可以成功生成ssl证书,在配置到Nginx上即可。
# 生成私钥
sudo openssl genrsa -out shop.work.com.key 2048
# 生成证书签名请求 (CSR)
sudo openssl req -new -key shop.work.com.key -out shop.work.com.csr
-subj "/C=CN/ST=Beijing/L=Beijing/O=Company/OU=IT/CN=shop.work.com"
# 生成自签名证书 (有效期为365天)
sudo openssl x509 -req -days 365
-in shop.work.com.csr
-signkey shop.work.com.key
-out shop.work.com.crt
Nginx ssl证书配,配置上就能在本地正常访问了。
server {
listen 80;
listen 443 ssl;
server_name shop.work.com;
# SSL 证书路径(对应第一步生成的文件)
ssl_certificate /root/ssl/shop.work.com/shop.work.com.crt;
ssl_certificate_key /root/ssl/shop.work.com/shop.work.com.key;
# SSL 安全配置(推荐参数)
ssl_protocols TLSv1.2 TLSv1.3; # 支持的 TLS 版本
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM- SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers on; # 优先使用服务器加密套件
ssl_session_cache shared:SSL:10m; # 会话缓存
ssl_session_timeout 10m; # 会话超时时间
}
在Nginx与PHP进行fastCgi的进行通信的时候,页面产生了错误信息No input file specified.,翻了好多资料,把它整理出来也是记录也是分享,只要是Lnmp架构的小伙伴们对他一定不陌生,系统的对这个知识点做一个记录,以防止在出现同样的坑。
简单来说,open_basedir 是一个PHP配置指令,用于将PHP程序可以访问的文件限制在指定的目录树中,包括文件本身。脚本只能在这个监狱范围内读取、写入、执行文件。一旦试图“越狱”,访问监狱外的文件,PHP就会报错并拒绝访问。
它主要的作用就是针对Web目录安全的考量,只能对设置的特定目录有对应的操作权限。
当你遇到 open_basedir 相关错误时,通常会在错误日志中看到类似这样的信息:
Warning: file_exists(): open_basedir restriction in effect.
File(XXXXXXXX) is not within the allowed path(s)...
#或者
No input file specified.
在Nginx、php-fpm、php.ini,中都可以设置对open_basedir进行设置,但它们的生效范围和优先级是不同的。优先级从高到低是: Nginx > PHP-FPM > php.ini。
1、php.ini (全局配置,优先级最低)优先级最低,如果其他地方没有设置,则使用这里的值,但不建议在这里设置,因为这个配置属于php全局配置,如果有A、B、C 三个项目同时在运行,设置那个目录都会影响到其他的Web站点运行。
open_basedir = /var/www/html:/tmp
2、PHP-FPM 进程池配置 (Pool Configuration,优先级中等)
ps aux | grep php-fpm
... php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
[www]
php_admin_value[open_basedir] = /home/wwwroot/shop/crmeb:/tmp
3、Nginx
location ~ .php(.*)$ {
fastcgi_param PHP_ADMIN_VALUE "open_basedir=/home/wwwroot/shop/crmeb:/tmp";
}
推荐方案:为每个项目创建独立的 PHP-FPM 进程池,这是最安全、最推荐的做法,可以实现真正的项目隔离。
在实际开发中有这样的情况,我有三个项目分别是Shop、Crm、Web三个项目,可以使用不同的Unix文件或Tcp端口来进行通信,对参数进行一下简单的说明:
listen.owner 控制的是 PHP-FPM 监听的 Unix Socket 文件的所有者listen.group 控制的是 PHP-FPM 监听的 Unix Socket 文件的所有组[shop]shop 线程池所属模块的配置[shop]
listen = /tmp/php-shop-cgi.sock
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
listen.owner = www
listen.group = www
listen.mode = 0666
user = www
group = www
; 安全设置 - 核心!
php_admin_value[open_basedir] = /home/wwwroot/shop/crmeb:/tmp
[crm]
listen = /tmp/php-crm-cgi.sock
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
listen.owner = www
listen.group = www
listen.mode = 0666
user = www
group = www
; 安全设置 - 核心!
php_admin_value[open_basedir] = /home/wwwroot/shop/crmeb:/tmp
配置完要重启服务,查看进程,Shop和Crm的线程池就都有了。
$ ps aux | grep php-fpm
root php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
www php-fpm: pool shop
www php-fpm: pool shop
www php-fpm: pool crm
www php-fpm: pool crm
Uni-App是一款非常优秀的国产跨平台的前端框架,跨平台移动应用开发(核心优势) ,如果您想开发手机 App,但又不想学习 Java/Kotlin (Android) 或 Swift/Objective-C (iOS) :它是您的绝佳选择。
如果您需要同时开发 App 和多个平台的小程序。
同时体验了微信小程序IDE,也体验了HBuilderX,感觉HBuilderX开发效率会高一些,整体来说还是一款不错的工具。
2025-10-24
网易《逆水寒》手游与宇树科技达成合作,虚拟世界将成机器人技术试验田
2025-10-24
谷歌间接承认 Tensor G5 芯片存在 GPU 问题,将推送更新优化 Pixel 10 系列手机