问题场景
发布 wordpress 代码,服务器是 root 用户创建的 docker 运行时环境。像以往一样,将只有一行代码变更的 commit 发布上去。
第一步,$ cd /var/www/site/
到官网目录下。
第二步,$ sudo su
切换到 root permission shell 准备各种操作。
第二步,# git fetch -p && git merge --ff-only origin/master
来发布代码
第三步,刷新官网页面…..
第四步,卡脸啦!!!!居然页面都空了!!!!
代码变更如下:
diff --git a/wp-content/themes/startupkit/functions.php b/wp-content/themes/startupkit/functions.php
index 2db0b27..90e1ed3 100644
--- a/wp-content/themes/startupkit/functions.php
+++ b/wp-content/themes/startupkit/functions.php
@@ -417,7 +417,7 @@ function twentyseventeen_scripts() {
wp_enqueue_style( 'twentyseventeen-fonts', twentyseventeen_fonts_url(), array(), null );
// Theme stylesheet.
- wp_enqueue_style( 'twentyseventeen-style', get_stylesheet_uri() );
+ wp_enqueue_style( 'twentyseventeen-style', get_stylesheet_uri(), array(), filemtime(get_template_directory().'/style.css') );
// Load the dark colorscheme.
if ( 'dark' === get_theme_mod( 'colorscheme', 'light' ) || is_customize_preview() ) {
问题定位
后来一顿检查和定位,从前端页面到Nginx、到代码内容,语法也对(毕竟也是测过的)。就算恢复上一个 commit,也是同样到问题。有某个脚本失效了!
赶紧 ls -lt
看了一下 functions.php
变更文件到权限。天呐!权限居然是 640,其他文件都是 644。
问题解决
赶紧敲键盘 sudo chmod 0644 functions.php
,再刷新页面,问题解决。
问题根源
用 sudo su
方式,创建了一个文件 test-sudo-su
;
在用 sudo
方式,创建了另外一个文件 test-sudo
;
对比一下:
-rw-r----- 1 root root 0 Jan 9 21:10 test-sudo-su
-rw-r--r-- 1 root root 0 Jan 9 21:10 test-sudo
好吧,我了解了。除非服务的进程用户组和操作人员的用户组都是同一个,否则这个文件根本读不出来 sudo su
的内容。
我的问题来了
我的问题来了:谁能告诉我为什么?正常情况下不应该是 644 吗?什么样的服务器配置能得到这个结论?
这是我服务器的版本信息:
wordpress@website-1:~$ uname -a
Linux website-1 4.4.0-82-generic #105-Ubuntu SMP Tue Jun 20 15:23:02 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux