WordPress 将Debug写入文件

在wp-config中打开debug后,出错会直接显示在前端,但这会影响成品站点的用户体验,添加如下两个定义后可以不显示在前端,并且记录在wp-content/debug.log中。 define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false ); 但是由于WordPress内核本身年代久远,如果你使用新的PHP版本比如8,log将会记录大量由WordPress本身造成的deprecated的提示,虽然官方文档针对log的等级可以用如下来设置: error_reporting( E_ALL & ~E_DEPRECATED ); 但是由于wp-config加载比较靠前,错误报告设置极大可能会被后面的某一些项给改写。我尝试过在新安装的WordPress中,剔除Depreacated信息都是不起作用的。 所以有了如下解决方案: define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false ); $GLOBALS['wp_filter'] = array( 'enable_wp_debug_mode_checks' => array( 10 => array( array( 'accepted_args' => 0, 'function' => function () { if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) { // *** This is the key line - change to adjust to whatever logging state you want error_reporting( E_ALL & ~E_DEPRECATED ); ini_set( 'display_errors', defined( 'WP_DEBUG_DISPLAY' ) &amp;&amp; WP_DEBUG_DISPLAY ? 1 : 0 ); if ( in_array( strtolower( (string) WP_DEBUG_LOG ), array( 'true', '1' ), true ) ) { $log_path = WP_CONTENT_DIR . '/debug.log'; } elseif ( is_string( WP_DEBUG_LOG ) ) { $log_path = WP_DEBUG_LOG; } else { $log_path = false; } if ( $log_path ) { ini_set( 'log_errors', 1 ); ini_set( 'error_log', $log_path ); } if ( defined( 'XMLRPC_REQUEST' ) || defined( 'REST_REQUEST' ) || defined( 'MS_FILES_REQUEST' ) || ( defined( 'WP_INSTALLING' ) &amp;&amp; WP_INSTALLING ) || wp_doing_ajax() || wp_is_json_request() ) { ini_set( 'display_errors', 0 ); } } return false; }, ), ), ));</code></pre> 使用wp_filter去处理,不会被覆写,有多种情况处理,log文件不记录depracated信息,甚至你可以根据自己的需求去编辑log等级。

2024-07-29 · 1 min · Duke Yin

纯JavaSript 读取 写入Cookie

通常会推荐安装jquery-cookie插件,但是本着尽量少依赖的原则,根本不需要更多臃肿的依赖,使用两个function即可解决读写cookie: 读取Cookie: const getCookieValue = (name) => ( document.cookie.match('(^|;)\\s*' + name + '\\s*=\\s*([^;]+)')?.pop() || '' ) 写入Cookie const setCookie = (name, value, days = 7, path = '/') => { const expires = new Date(Date.now() + days * 864e5).toUTCString() document.cookie = name + '=' + encodeURIComponent(value) + '; expires=' + expires + '; path=' + path } 读取cookie用到了正则表达,方程非常简洁。

2024-07-18 · 1 min · Duke Yin

Linux下安装ddns-go

ddns-go 是一个多平台DDNS工具,可以非常便捷的主动更新DNS记录,以达到动态IP绑定固定域名的目的。 通常我们使用Docker版,但如果系统不需要Docker,纯Linux环境下也是可以安装并且自启动。 新建一个目录用于存放ddns-go程序,并进入这个目录 mkdir -p /usr/local/ddns-go cd /usr/local/ddns-go 下载ddns-go,在ddns-go发布页面找到适合自己硬件平台的最新版本,我的是X86 64位,于是选择的X86 64,url根据自己选择替换。 wget https://github.com/jeessy2/ddns-go/releases/download/v6.2.2/ddns-go_6.2.2_linux_x86_64.tar.gz 下载完成后解压缩 tar -zxvf ddns-go_6.2.2_linux_x86_64.tar.gz 安装ddns-go服务 sudo ./ddns-go -s install ddns-go的web界面默认是9876端口,如果希望使用webUI,需要linux放行9876端口 对于Debian: sudo ufw allow 9876/tcp cenos: sudo firewall-cmd --permanent --add-port=9876/tcp 然后就可以在本地打开 ip:9876 进行配置。 当配置结束后,可以把服务加入开机启动 # 重载 systemctl daemon-reload # 启动 systemctl start ddns-go.service # 开机启动 systemctl enable ddns-go.service

2024-03-26 · 1 min · Duke Yin

局域网子路由无法访问ESXI及其他虚拟机

ESXi 管理界面: Networking / Virtual switched / vSwitch0 / Edit settings / Security 把 Promiscuous mode 和 Forged transmits 设置为 Accept 就行了

2024-03-24 · 1 min · Duke Yin

ESXI 虚拟机HomeAssistant OS断电后无法开机

有时候断电后在ESXI中无法启动HomeAssistant OS,提示 无法打开虚拟机 HomeAssistant 的电源。对象类型需要托管的 I/O 单击此处了解更多 解决如下 打开ESXI近期任务中无法开启HAOS的错误信息 复制错误信息中虚拟磁盘文件的路径并保存 SSH连接ESXI并Root登录 执行以下两条命令 vmkfstools -x check [PATH] vmkfstools -x repair [PATH] 期中[path]要替换成你第二步中得到的文件路径,像下面这样 vmkfstools -x check /vmfs/volumes/5fee7060-228842b9-f949-60beb414cab4/HomeAssistant/haos_ova-11.5-000005.vmdk vmkfstools -x repair /vmfs/volumes/5fee7060-228842b9-f949-60beb414cab4/HomeAssistant/haos_ova-11.5-000005.vmdk 执行完成后,HAOS就可以启动了。

2024-03-16 · 1 min · Duke Yin

ESXI直通SATA硬盘

接上SATA硬盘之后,通常无法正常使用,无法直通 在ESXI 主机 管理 硬件中 找到SATA设备,记下设备ID和供应商ID。 开启SSH连接后,编辑 /etc/vmware/passthru.map 这个文件在末尾添加 8086 54d3 d3d0 false 8086是供应商ID 54d3是设备ID d3d0不用改,false表示不共享给其他esxi设备使用。

2024-03-16 · 1 min · Duke Yin

群晖反向代理HomeAssistant无法打开页面

信任反代网段 需要先在configration.yml添加如下内容: http: use_x_forwarded_for: true trusted_proxies: - 192.168.2.0/24 IP需要填写反代服务器所处的网段,如果需要信任多网段,多添加几行 重启HomeAssistant 反代设置 群晖或其他反代设置界面需要打开WebSocket支持 群晖中,反代设置,自定义标题,新增WebSocket,会自动添加两个条目。 还需再添加两个条目,最后是四条 Upgrade $http_upgrade Connection $connection_upgrade X-Forwarded-For $proxy_add_x_forwarded_for Host $host done

2024-03-14 · 1 min · Duke Yin

CentOS7 安装Docker 安装Nginx Proxy Manager

防火墙放行端口: sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --permanent --add-port=81/tcp 重载防火墙 sudo firewall-cmd --reload 尝试卸载旧版Docker sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine 如果没有旧版 会提示没安装 安装yum-utils,并使用yum-config-manager设置docker仓库 sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 安装Docker引擎(最新版) ...

2024-03-14 · 2 min · Duke Yin

解决Window10+ 远程桌面不成功

Windows10 远程桌面需要在被控端开启远程桌面,设定可以控制的用户。且需要被控端公网可见或有穿透。 如果你绑定了微软账号,需要使用微软账号密码远程鉴权,而不是电脑的PIN码。 如果还是不成功,需要在被控端上打开CMD执行以下命令: runas /u:MicrosoftAccount\[email protected] winver [email protected] 是你绑定的微软账号。 会询问你的密码 输入后执行即可。

2024-02-27 · 1 min · Duke Yin

PHP发送http Post Get请求

Post 方法1 curl <?php //The url you wish to send the POST request to $url = $file_name; //The data you want to send via POST $fields = [ ‘__VIEWSTATE ’ => $state, ‘__EVENTVALIDATION’ => $valid, ‘btnSubmit’ => ‘Submit’ ]; $headers = [ ‘User-Agent: NoBrowser v0.1 beta’, ]; //url-ify the data for the POST $fields_string = http_build_query($fields); ...

2024-01-08 · 2 min · Duke Yin