首页
关于
Search
1
Fastadmin 美化后台样式
310,891 阅读
2
关于破解移动宽带光猫 型号: GS3101 超级管理员密码
26,918 阅读
3
给Thinkphp3用上composer
19,964 阅读
4
Wallpaper完美壁纸修复天气bug(无需申请API)
19,748 阅读
5
PECL无法安装时手动编译安装PHP扩展
19,606 阅读
Linux
Mysql
PHP
Nginx
归档
Android
Python
IOS
浴室沉思
C++
CCF CSP认证
Windows
C#
前端
登录
Search
标签搜索
php
git
Windows
wkhtmltopdf
短信
defense
API
Google Photos
python
wkhtmltoimage
网页快照
linux
ssr
https
mail
sms
小程序
封装
ComoBox
拼多多
Guooo
累计撰写
126
篇文章
累计收到
81
条评论
首页
栏目
Linux
Mysql
PHP
Nginx
归档
Android
Python
IOS
浴室沉思
C++
CCF CSP认证
Windows
C#
前端
页面
关于
搜索到
53
篇与
的结果
2025-01-17
Centos7更换YUM源
Centos7停更后,对应的YUM仓库也无法连接,所以只能替换YUM源把下面的shell保存为如yumcentos7.sh,然后执行bash yumcentos7.sh即可#!/bin/bash # 检查系统版本 if [ -f /etc/redhat-release ]; then OS_VERSION=$(grep -oE '[0-9]+\.[0-9]+' /etc/redhat-release) else echo "未找到 /etc/redhat-release 文件。请确保您运行的是 CentOS 系统。" exit 1 fi # 仅支持 CentOS 7 if [[ $OS_VERSION != "7."* ]]; then echo "此脚本仅支持 CentOS 7 系统。当前系统版本为:$OS_VERSION" exit 1 fi # 备份现有的YUM源配置文件 if [ -f /etc/yum.repos.d/CentOS-Base.repo ]; then cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak echo "现有的YUM源配置文件已备份为CentOS-Base.repo.bak" fi # 删除所有现有的YUM源配置文件 rm -f /etc/yum.repos.d/*.repo # 添加阿里云的CentOS源 cat > /etc/yum.repos.d/CentOS-Base-ali.repo <<EOF [ali-base] name=CentOS-\$releasever - Base - aliyun baseurl=http://mirrors.aliyun.com/centos/7/os/\$basearch/ gpgcheck=1 enabled=1 priority=1 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 [ali-updates] name=CentOS-\$releasever - Updates - aliyun baseurl=http://mirrors.aliyun.com/centos/7/updates/\$basearch/ gpgcheck=1 enabled=1 priority=1 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 [ali-extras] name=CentOS-\$releasever - Extras - aliyun baseurl=http://mirrors.aliyun.com/centos/7/extras/\$basearch/ gpgcheck=1 enabled=1 priority=1 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 [ali-plus] name=CentOS-\$releasever - Plus - aliyun baseurl=http://mirrors.aliyun.com/centos/7/centosplus/\$basearch/ gpgcheck=1 enabled=1 priority=1 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 EOF # 添加CentOS官方Vault源 cat > /etc/yum.repos.d/CentOS-Vault.repo <<EOF [vault-base] name=CentOS-\$releasever - Base - Vault baseurl=http://vault.centos.org/7.9.2009/os/\$basearch/ gpgcheck=1 enabled=1 priority=10 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 [vault-updates] name=CentOS-\$releasever - Updates - Vault baseurl=http://vault.centos.org/7.9.2009/updates/\$basearch/ gpgcheck=1 enabled=1 priority=10 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 [vault-extras] name=CentOS-\$releasever - Extras - Vault baseurl=http://vault.centos.org/7.9.2009/extras/\$basearch/ gpgcheck=1 enabled=1 priority=10 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 [vault-plus] name=CentOS-\$releasever - Plus - Vault baseurl=http://vault.centos.org/7.9.2009/centosplus/\$basearch/ gpgcheck=1 enabled=1 priority=10 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 EOF # 清理并生成缓存 yum clean all yum makecache echo "YUM源已成功更换(包括CentOS Vault和阿里云源)"
2025年01月17日
185 阅读
0 评论
0 点赞
2024-12-13
Fastadmin 美化后台样式
0. 前言前几天有人问我怎么修改后台框架样式,我给他找到了 统一修改后台命令行生成的样式 这篇文章,但是朋友说介绍的不是很明白,于是这里参考这篇文章的思路简单扩展一下。1. 新建自定义样式首选确保你在debug模式下在 public/assets/css 目录下新建一个自定义的css文件,用于修改你想要的样式。比如我命名custom-guooo.css。这里的样式我只抛砖引玉,你也可以自行发挥,代码如下:.btn { display: inline-block; line-height: 1.5; color: #212529; text-align: center; text-decoration: none; vertical-align: middle; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; background-color: transparent; border: 1px solid transparent; font-size: 1rem; transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out; padding: 8px 20px; border-radius: 10px; font-weight: 500; } .btn-primary { color: #7888fc; border-color: #7888fc } .btn-primary.focus,.btn-primary:focus,.btn-primary:hover,.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active { color: #fff; border-color: #7888fc; background-color: #7888fc; box-shadow: 0 7px 23px -8px #7888fc } .btn-secondary { color: #5b5b5b; border-color: #e4e6ef } .btn-secondary.focus,.btn-secondary:focus,.btn-secondary:hover,.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active { color: #5b5b5b; border-color: #e4e6ef; background-color: #e4e6ef; box-shadow: 0 7px 23px -8px #e4e6ef } .btn-success { color: #708069; border-color: #708069 } .btn-success.focus,.btn-success:focus,.btn-success:hover,.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active { color: #fff; border-color: #708069; background-color: #708069; box-shadow: 0 7px 23px -8px #708069 } .btn-danger { color: #f75d6fd8; border-color: #f75d6fd8 } .btn-danger.focus,.btn-danger:focus,.btn-danger:hover,.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active { color: #fff; border-color: #f75d6fd8; background-color: #f75d6fd8; box-shadow: 0 7px 23px -8px #f75d6fd8 } .btn-warning { color: #f5af47ea; border-color: #f5af47ea } .btn-warning.focus,.btn-warning:focus,.btn-warning:hover,.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active { color: #fff; border-color: #f5af47ea; background-color: #f5af47ea; box-shadow: 0 7px 23px -8px #f5af47ea } .btn-info { color: #9465fcea; border-color: #9465fcea } .btn-info.focus,.btn-info:focus,.btn-info:hover,.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active { color: #fff; border-color: #9465fcea; background-color: #9465fcea; box-shadow: 0 7px 23px -8px #9465fcea } .btn-dark { color: #5b5b5b; border-color: #d1d3e0 } .btn-dark.focus,.btn-dark:focus,.btn-dark:hover,.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active { color: #5b5b5b; border-color: #d1d3e0; background-color: #d1d3e0; box-shadow: 0 7px 23px -8px #d1d3e0 } .btn-default { color: #5b5b5b; border-color: #d1d3e0 } .btn-default.focus,.btn-default:focus,.btn-default:hover,.btn-default:not(:disabled):not(.disabled).active,.btn-default:not(:disabled):not(.disabled):active { color: #5b5b5b; border-color: #d1d3e0; background-color: #d1d3e0; box-shadow: 0 7px 23px -8px #d1d3e0 }2. 引入自定义样式修改 public/assets/css/backend.css 文件(注意不要修改backend.min.css),在第15行左右加一行引入你的自定义文件@import url("../css/custom-guooo.css");,注意要确保是最后一个@import。引入之后你就可以刷新浏览器看一下样式是否生效了,记得提前清理浏览器缓存。3. 压缩打包后台的CSS修改了backend.css后还需要手动压缩后台css,命令行执行php think min -m backend -r css然后关闭调试模式,清理浏览器缓存后再次刷新,样式生效的话就可以了。至此就大功告成了其他如果你直接使用了上面的样式,可能后台的登录页按钮会有点奇怪,这个按钮强制定义了背景色为蓝色,你可以修改application/admin/view/index/login.html第135行左右的按钮为:<button type="submit" class="btn btn-primary btn-lg btn-block">{:__('Sign in')}</button>弹窗样式也是修改backend.css,效果图的样式是修改了下面这几个,有需要可以自行替换(修改后别忘了压缩打包).layui-layer-fast .layui-layer-btn a { background-color: #fff; color: #708069 !important; height: 32px; line-height: 32px; margin-top: 0; font-size: 13px; border: none; } .layui-layer-fast .layui-layer-btn .layui-layer-btn0 { background-color: #708069; color: #fff !important; border: #708069; } .layui-layer-fast .layui-layer-footer { padding: 8px 20px; background-color: #f5f5f5; height: auto; min-height: 53px; text-align: inherit !important; border-top: 1px solid #C0C0C0; } .layui-layer-fast .layui-layer-setwin > a:after { content: "\e625"; font-family: iconfont; font-style: normal; font-weight: normal; text-decoration: inherit; position: absolute; font-size: 18px; color: #708069; margin: 0; z-index: 1; }
2024年12月13日
310,891 阅读
2 评论
4 点赞
2023-08-02
PECL无法安装时手动编译安装PHP扩展
这里用mongodb举例1.手动下载mongodb扩展源码https://pecl.php.net/package/mongodb如需要下载其他扩展,在官网右上角搜索即可2.找个目录解压,进入到第二层文件夹目录(和package.xml同级目录)3.使用终端进入刚才这个目录cd /xxx/mongodb-1.16.1/mongodb-1.16.14.找到你要安装的对应PHP版本的phpize,如果是默认php版本可以使用which phpize查看路径,比如我需要安装php7.2版本的扩展,这里就是用我电脑上php7.2路径里的phpize,然后回车/Applications/MAMP/bin/php/php7.2.34/bin/phpize5.生成安装文件同上面一样,找到你要安装的对应PHP版本的php-config,找不到可以使用which php-config参考查看比如我电脑对应的路径为/Applications/MAMP/bin/php/php7.2.34/bin/php-config那我这一步我的执行命令就是./configure --with-php-config=/Applications/MAMP/bin/php/php7.2.34/bin/php-config等于后面路径为我的php-config文件存放路径6.编译扩展sudo make && make install编译出的扩展会自动保存到你php对应的目录下7.最后修改php.ini文件,加上对应扩展名称,重启PHP即可extension=mongodb.so8.完成
2023年08月02日
19,606 阅读
0 评论
0 点赞
2023-06-22
Linux安装最新版Tinyproxy 支持密码验证
前言之前在Linux服务器安装过tinyproxy用于ip代理,但是yum安装的话,版本最高只到1.8.3,是不支持账号密码验证的,也就是说要么限制ip,不然任何人都能连。而到了1.10.0就支持Basic HTTP Authentication了,但是得通过编译安装。目前Github上最新的是1.11.1,本文是安装的简要教程。安装及配置如果通过yum安装过旧版本,得先卸载掉。yum erase tinyproxy从Github下载安装最新版的命令wget https://github.com/tinyproxy/tinyproxy/releases/download/1.11.1/tinyproxy-1.11.1.tar.gz tar -zxvf tinyproxy-1.11.1.tar.gz cd tinyproxy-1.11.1 ./configure make make install安装完成后可用以下命名查看路径和版本。# 查看路径 which tinyproxy /usr/local/bin/tinyproxy # 创建超链接 rm -rf /usr/sbin/tinyproxy && ln -s /usr/local/bin/tinyproxy /usr/sbin/tinyproxy # 查看版本,最新1.11.1 tinyproxy -v tinyproxy 1.11.1修改配置文件默认的配置文件路径vi /usr/local/etc/tinyproxy/tinyproxy.conf主要修改的地方# 将下面直接注释掉,允许所有ip访问 #Allow 127.0.0.1 #Allow ::1 # 设置用户名密码 BasicAuth username password # 顺便将下面两行取消注释,后面有用到 PidFile "/var/run/tinyproxy/tinyproxy.pid" LogFile "/var/run/tinyproxy/tinyproxy.log" 创建文件mkdir -p /var/run/tinyproxy touch /var/run/tinyproxy/tinyproxy.pid touch /var/run/tinyproxy/tinyproxy.log chmod 777 /var/run/tinyproxy/tinyproxy.log创建service系统服务因为新版tinyproxy取消了多进程只有一个进程,所以服务类型不能用forking了,要改一下改成simplevi /usr/lib/systemd/system/tinyproxy.service# 粘贴以下代码 [Unit] Description=Startup script for the tinyproxy server After=network.target [Service] #Type=forking Type=simple PIDFile=/var/run/tinyproxy/tinyproxy.pid #这里加了 -d 非后台运行 ExecStart=/usr/local/bin/tinyproxy -d -c /usr/local/etc/tinyproxy/tinyproxy.conf ExecReload=/bin/kill -HUP $MAINPID KillMode=process [Install] WantedBy=multi-user.target然后就可以正常使用service命令了service tinyproxy start # 启动 service tinyproxy stop # 停止 service tinyproxy restart # 重启 service tinyproxy status # 状态 # 将tinyproxy服务设置开机自启 systemctl enable tinyproxy最后整理脚本命令yum erase tinyproxy wget https://github.com/tinyproxy/tinyproxy/releases/download/1.11.1/tinyproxy-1.11.1.tar.gz tar -zxvf tinyproxy-1.11.1.tar.gz cd tinyproxy-1.11.1 ./configure make make install # 创建超链接 rm -rf /usr/sbin/tinyproxy && ln -s /usr/local/bin/tinyproxy /usr/sbin/tinyproxy # 查看版本,最新1.11.1 tinyproxy -v tinyproxy 1.11.1 vi /usr/local/etc/tinyproxy/tinyproxy.conf # 修改配置 # 将下面直接注释掉,允许所有ip访问 #Allow 127.0.0.1 #Allow ::1 # 设置用户名密码 BasicAuth username password # 顺便将下面两行取消注释,后面有用到 PidFile "/var/run/tinyproxy/tinyproxy.pid" LogFile "/var/run/tinyproxy/tinyproxy.log" # 创建文件 mkdir -p /var/run/tinyproxy touch /var/run/tinyproxy/tinyproxy.pid touch /var/run/tinyproxy/tinyproxy.log chmod 777 /var/run/tinyproxy/tinyproxy.log # 添加系统服务 vi /usr/lib/systemd/system/tinyproxy.service #粘贴以下代码 [Unit] Description=Startup script for the tinyproxy server After=network.target [Service] #Type=forking Type=simple PIDFile=/var/run/tinyproxy/tinyproxy.pid #这里加了 -d 非后台运行 ExecStart=/usr/local/bin/tinyproxy -d -c /usr/local/etc/tinyproxy/tinyproxy.conf ExecReload=/bin/kill -HUP $MAINPID KillMode=process [Install] WantedBy=multi-user.target #启动 systemctl start tinyproxy #开机自启 systemctl enable tinyproxy
2023年06月22日
18,892 阅读
0 评论
0 点赞
2021-10-14
给Thinkphp3用上composer
都2021年了,我不理解为什么还要使用TP3的项目修改系统构建时使用的是 thinkphp3.2.3,当时的框架并没有使用 composer 作为包管理器,第三方包统一放到了 ThinkPHP/Library/Vendor 目录下面。随着第三方包越来越多,单纯的使用 vendor() 加载扩展已经没法满足要求,所以记录下tp3使用composer的过程1. 项目根目录添加 composer.json{ "require": { "zircote/swagger-php": "^2.0", "giggsey/libphonenumber-for-php": "^8.12" }, "repositories": { "packagist": { "type": "composer", "url": "https://mirrors.aliyun.com/composer/" } } }2. 安装composer安装composer看这个:安装composer3. 安装依赖项目目录直接安装依赖包,自动生成 vendor 目录composer install4. 引入自动加载在原来的 thinphp 框架里 index.php 文件头部首行引入 vendor/autoload.php<?php header('Access-Control-Allow-Origin:*'); // 增加自动加载 require './vendor/autoload.php'; if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !'); define('APP_DEBUG',true); define('APP_PATH','./Application/'); define('RUNTIME_PATH','./Runtime/');define("TMPL_PATH","./tpl/"); define("UPLOAD_PATH","./Upload/"); 完成
2021年10月14日
19,964 阅读
0 评论
0 点赞
2020-11-05
PHP一个简单字符串拼接签名的方法(Join)
经常有需求类似于:第一步:设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。第二步:在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。以往都是$k=$v&,最后再把末尾的&去掉,比较麻烦。无意间发现了有个join函数,用法如下:/** * 获取签名 * @param $params array 数组 * @return string 拼接后的字符串MD5 */ public function getSign($params) { ksort($params); $str = []; foreach ($params as $k => $v){ if (empty($v)) continue; $str[] = "{$k}={$v}"; } return strtoupper(md5(join('&',$str))); }
2020年11月05日
7,359 阅读
0 评论
0 点赞
2020-10-15
Centos添加新硬盘扩容根目录
云服务器新挂载了一块硬盘,还没分区,想要直接扩容到根目录,想要做到无缝扩容。进入系统查看,新硬盘名称是vdb,100G的lsblk然后我们通过LVM,逻辑卷管理的方式挂载到vda上面这里引用下别人的介绍LVM简单介绍: 它是 Linux 下对磁盘分区进行管理的一种机制。LVM 是建立在磁盘分区和文件系统之间的一个逻辑层,系统管理员可以利用 LVM 在不重新对磁盘分区的情况下动态的调整分区的大小。如果系统新增了一块硬盘,通过 LVM 就可以将新增的硬盘空间直接扩展到原来的磁盘分区上。 通过 LVM 技术,可以屏蔽掉磁盘分区的底层差异,在逻辑上给文件系统提供了一个卷的概念,然后在这些卷上建立相应的文件系统。下面是 LVM 中主要涉及的一些概念。 物理存储设备(Physical Media):指系统的存储设备文件,比如 /dev/sda、/dev/sdb 等。 PV(物理卷 Physical Volume):指硬盘分区或者从逻辑上看起来和硬盘分区类似的设备(比如 RAID 设备)。 VG(卷组 Volume Group):类似于非 LVM 系统中的物理硬盘,一个 LVM 卷组由一个或者多个 PV(物理卷)组成。 LV(逻辑卷 Logical Volume):类似于非 LVM 系统上的磁盘分区,LV 建立在 VG 上,可以在 LV 上建立文件系统。 PE(Physical Extent):PV(物理卷)中可以分配的最小存储单元称为 PE,PE 的大小是可以指定的。 LE(Logical Extent):LV(逻辑卷)中可以分配的最小存储单元称为 LE,在同一个卷组中,LE 的大小和 PE 的大小是一样的,并且一一对应。 可以这么理解,LVM 是把硬盘的分区分成了更小的单位(PE),再用这些单元拼成更大的看上去像分区的东西(PV),进而用 PV 拼成看上去像硬盘的东西(VG),最后在这个新的硬盘上创建分区(LV)。文件系统则建立在 LV 之上,这样就在物理硬盘和文件系统中间添加了一层抽象(LVM)。下图大致描述了这些概念之间的关系: 对上图中的结构做个简单的介绍: 两块物理硬盘 A 和 B 组成了 LVM 的底层结构,这两块硬盘的大小、型号可以不同。PV 可以看做是硬盘上的分区,因此可以说物理硬盘 A 划分了两个分区,物理硬盘 B 划分了三个分区。然后将前三个 PV 组成一个卷组 VG1,后两个 PV 组成一个卷组 VG2。接着在卷组 VG1 上划分了两个逻辑卷 LV1 和 LV2,在卷组 VG2 上划分了一个逻辑卷 LV3。最后,在逻辑卷 LV1、LV2 和 LV3 上创建文件系统,分别挂载在 /usr、/home 和 /var 目录。1.建立新分区使用 fdisk -l 命令查看:可以看到 /dev/vdb 是新增的硬盘。执行 fdisk /dev/vdb 对 vdb 进行分区。输入 n 建立新分区,接着输入 p 选择主分区,分区号和扇区号直接回车默认即可,这样会将整个硬盘都添加到新分区中。先不要退出,接下来更改分区文件系统id,输入t之后更改分区文件系统id,输入L查看所有列表,最后我们输入8e,修改为LVM格式,最后w把更改写入硬盘。再次查看这时已经有了一个新的分区 vdb12.创建物理卷pv创建物理卷 pvcreate /dev/vdb1pvdisplay查看,已经提示我们有一个新增的 /dev/vdb13.扩容卷组vgvgdisplay 查看卷组 可以看到原有卷组名称为 centos将新创建的 物理卷pv /dev/vdb1 追加到原有卷组里,也就是 "centos" 中,扩容卷组。vgextend centos /dev/vdb1然后再次查看,发现总容量已经由原来的20G增加到了120G,VG卷组扩容成功4.逻辑卷扩容lvdisplay 查看当前逻辑卷,可以看到根目录逻辑卷的路径为 /dev/centos/root把我们新增的vdb1逻辑卷全部扩容进去 lvextend -l+100%FREE /dev/centos/root 5.最后扩容文件系统xfs_growfs /dev/centos/root可以看到已经扩容完成了
2020年10月15日
3,022 阅读
0 评论
0 点赞
2020-10-07
PHP使用mkdir创建目录后无法写入问题
今天使用php的mkdir递归创建文件夹,创建完之后的文件夹权限是d-wxr----x也就是411,而且用chmod也没法改权限,只能sudo rm -rf 删除它原因:代码错误,mkdir函数的第二个参数不应使用字符串参数'0755',而是使用0755值错误代码:mkdir('dir_path','0755',true);正确代码:mkdir('dir_path',0755,true);
2020年10月07日
3,825 阅读
0 评论
0 点赞
1
2
...
7