阅读视图

发现新文章,点击刷新页面。
🔲 ⭐

WordPress服务器权限与所有权配置详解

a person using a laptop

核心概念:所有权 > 权限

在Linux中,权限(755/644)必须配合正确的所有权(User:Group)才能生效。换言之,PHP进程(即WordPress)必须是文件/目录的“所有者”,才能在755/644权限下进行写入(上传图片、升级插件、生成缓存)。

标准化操作流程

确保位于WordPress根目录(通常为/var/www/htmlpublic_html)下执行。

第一步:修正所有权

对当前目录下所有文件的所有者和组,行统一之设定。兹以33 (www-data) 为例(后文同此)。

chown -R 33:33 .

第二步:批量重置目录权限

按:使用+模式代替\;可显著提高执行效率。

find . -type d -exec chmod 755 {} +

第三步:批量重置文件权限

find . -type f -exec chmod 644 {} +

第四步:关键文件安全加固

针对敏感文件设置更严格的只读权限。

# wp-config.php 包含数据库密码,生产环境应设为 440 或 400
# 前提:文件所有者必须是 PHP 运行用户,否则设为 400 后 PHP 无法读取将导致网站无法访问
chmod 440 wp-config.php

# .htaccess 控制伪静态,通常设为 644,若不频繁修改可设为 604
chmod 644 .htaccess

针对部分具体插件的特殊分析

按,任何要求设置777权限的插件通常都存在设计缺陷与安全隐患。

但在应用上述“严格权限”时,以下插件模块可能会遇到权限阻碍:

缓存类:Super Cache (超级缓存)

该插件需要向wp-config.php写入开启缓存的定义代码,并修改.htaccess。当wp-config.php被设置为440时,插件后台更新设置会报错或白屏。是故,作为运维策略:

  1. 配置/更新插件前:chmod 644 wp-config.php
  2. 完成配置后:chmod 440 wp-config.php

按:日常运行中,插件生成的静态文件在wp-content/cache,该目录保持755即可正常读写。

翻译与本地化:Loco Translate

插件直接写入wp-content/languages目录生成.po/.mo文件。

只要第一步的chown -R 33:33 .执行正确,标准755目录权限即可满足需求。如果无法保存翻译,通常是所有者变成了别的(例如:在www-data才OK的情况下,所有者却变为了root)。

联邦宇宙与导入类 (ActivityPub, Import/Export)

  • 依赖:wp-content/uploads
  • 注意:导入大型XML/CSV或处理ActivityPub媒体流时,会产生临时文件。
  • 排查:如果导入失败或头像不显示,通过ls -ld wp-content/uploads检查权限是否为drwxr-xr-x (755)且所有者为www-data

另外,像WP File Manager这样的插件,虽然对于共享主机用户来说非常地便利,但其风险其实极高。如果该插件存在0-day漏洞,攻击者可绕过WordPress权限体系,直接以www-data身份操作服务器文件(上传Webshell),此时440644设置将失效。对于自托管用户来说,如已经拥有SSH命令行权限,该插件会增加不必要的攻击面。不如卸载。

常见故障排查清单

  1. 错误:440导致某些环境白屏

    如果服务器使用的不是PHP-FPM (User: www-data) 而是以CGI模式运行(User: 系统账户),将wp-config.php设为440且所有者为www-data(或33)可能导致文件无法被读取,引发HTTP 500错误。

    • 验证:执行完命令后,如果网站正常访问,说明配置正确。
  2. 插件更新失败 / 无法创建目录

    • 现象:后台提示“无法创建目录”。
    • 原因:通常不是权限问题(755是对的),而是所有权问题。
    • 复查:运行ls -ld wp-content/plugins,确保输出包含www-data www-data(或33 33)。如果显示的是root root,插件将无法更新。
  3. Git/开发环境

    如使用Git管理代码,.git目录的权限不要设置为755/644,且不应允许Web访问。宜在Nginx/Apache配置中显式禁止访问.git目录。

推荐操作脚本

确认在WordPress根目录后,按顺序执行:

# 1. 修正所有权 (兹以www-data为例,即id 33)
chown -R 33:33 .

# 2. 修正目录权限
find . -type d -exec chmod 755 {} +

# 3. 修正文件权限
find . -type f -exec chmod 644 {} +

# 4. 加固配置文件 (注意:配置 Super Cache 插件时可能需临时改为 640/644)
chmod 440 wp-config.php

# 5. 确保 .htaccess 对 WP 可写但安全
chmod 644 .htaccess

延伸阅读

🔲 ⭐

进入不断重启的Docker容器的命令行之方法

停止自动重启

如果容器正在使用docker-compose.yml设置重启策略,临时将restart: always改为restart: no,然后执行docker-compose down停止它。

启动容器进入临时shell

手动启动容器并覆盖其默认命令,以便进入容器并设置权限。运行:

docker run -it --rm --entrypoint /bin/sh your_image_name

退出

做完想做的事后,退出容器命令行:

exit
🔲 ⭐

使用net use命令来临时挂载网络目录

在Windows CMD中,如果无法直接cd到一个网络目录(专门些的名字叫——通用命名约定〈UNC〉路径),可以使用net use命令来临时挂载网络目录。以下是具体步骤1 2

  1. 使用net use命令挂载网络目录:
net use Z: \\network_path\shared_folder /user:username password
  • 其中:
    • Z: 是你希望分配给网络目录的本地驱动器号。
    • \\network_path\shared_folder是网络目录的路径。
    • /user:username password是访问网络目录所需的用户名和密码。
    • 挂载完毕后,不仅在CMD内,图形界面的“文件资源管理器”下“此电脑”中也可以看到该挂载目录。
  1. 访问挂载的网络目录:
Z: # 直接输入`Z:`便可切换至该挂载盘符
cd shared_folder # 然后用`cd`命令跳转
  1. 完成操作后卸载网络目录:
net use Z: /delete

补充:pushd命令

在Windows CMD中,pushd命令也可以用来临时挂载网络目录并切换到该目录(而且该方式还更常见一些)。具体步骤如下:

  1. 使用pushd命令挂载网络目录3
set unc_path=\\network_path\shared_folder\b\c
pushd %unc_path%
  1. 执行想要的代码;
  1. 完成操作后使用popd命令卸载网络目录:
popd

使用pushd命令时,它会将网络路径\\network_path\shared_folder挂载到一个可用的盘符(例如Z:),并将工作目录更改为Z:\b\c
但是,这种方法有一个致命的缺点:如果用户对\\network_path\shared_folder\b\c有权限,但对\\network_path\shared_folder没有权限,那么所有在此目录下的命令都会报错:Access is denied4

参考资料

  1. rwv. 在 Windows CMD 中挂载网络路径至本地盘符. rwv 的博客. ↩︎
  2. Windows掛載共享磁碟/網路磁碟(CIFS)指令. 平凡的幸福. ↩︎
  3. pushd. Microsoft Learn. ↩︎
  4. rwv. 在 Windows CMD 中挂载网络路径至本地盘符. rwv 的博客. ↩︎
🔲 ⭐

检查PostgreSQL数据库服务器是否真的已经启动

导入

执行启动命令后,可以通过几种方式来检查 PostgreSQL 数据库服务器是否真的已经启动。

使用命令行工具检查

可以使用 pg_isready 命令来检查数据库服务器的运行状态。在终端中执行以下命令:

pg_isready -p 5432

如果数据库服务器正在运行并监听指定的端口(在这里是5432),命令会返回 “accepting connections”,表示服务器已经启动并可以接受连接。

查看日志文件

启动数据库服务器后,可以查看日志文件以获取更多详细信息。例如,假设日志文件的位置是 /var/log/postgresql/postgresql-12-main.log。则可以使用 tail 命令查看最后几行日志:

tail /var/log/postgresql/postgresql-12-main.log

如果服务器成功启动,日志文件中应该会显示相应的信息。

尝试连接到数据库

最直接的方式是尝试连接到数据库并执行一些查询。可以使用 PostgreSQL 的客户端工具(如 psql)连接到数据库并执行一些简单的查询语句。在终端中执行以下命令:

psql -h localhost -p 5432 -U postgres

这将连接到本地主机上的 PostgreSQL 数据库(假设数据库服务器在本地主机上),端口为 5432,并使用 “postgres” 用户身份登录。如果成功连接并登录到数据库,表示数据库服务器已经启动。

总结

通过以上方法之一,可以验证 PostgreSQL 数据库服务器是否已经成功启动。

🔲 ⭐

辰年再訪神保町

今日,逛神保町

2019年第60回東京名物神田古本まつり 神保町交差点会場の様子
二〇一九年第六十回東京名物神田古本祭,神保町交差点會場的樣子(みそがい,CC BY-SA 4.0)

神保町這邊,素以舊書店之多聞。上次認認真真逛神保町的舊書店,已經是大疫以前的事情了。前兩年重返日京,也去了兩回神保町左近,但都是赴飯局。東京舊書街的話,本鄉正門前一帶、白山京華路逛過幾回,早稻田高馬沿途則是過門未入——畢竟現在未在彼處讀書,沒法以前那樣通學途中順路翻兩頁


今日由九段下車站落車,六號出口出站。於是一路向北。

先到了玉川堂。這是一家書道相關的店鋪。門口的玻璃櫥窗內,擺了一尊《九成宮醴泉銘》碑的縮小件。店內售有日文書道、寺社朱印帳、筆、墨等。前日謁櫻神宮時,已經「重金」求得了朱印帳,否則可能還真考慮在這裏買一冊。——不過據說,最好分別以兩本不同的朱印帳,去收集神道神社和佛教寺院的御朱印,因部分神職人員不會寫混有兩種御朱印的朱印帳。這樣的話,似乎再買一冊,亦是一擇。

《九成宮醴泉銘》碑(示意)
四國八十八所朱印(示意,Dokudami,CC BY-SA 4.0)

山本書店,內有大量中國文、史關聯書籍。至其帙冊之語言,有日語,也有中文。這家中文書店,倒是我以前印象較淺的,算是今日收穫了。淺淺翻閱了幾本書:

  • 近代中国の思想と文学》(近代中國之思想與文學)。一看編者,居然是東大中文研。這本書,一九六七年出版,是部論文集,劈頭從嚴復開始,洎於聞一多。嚴復那邊是說幾道先生對西洋思想、著作的譯介;聞一多這邊,篇名是「聞一多與唐詩」。
  • 北京好日》,林語堂作,佐藤亮一譯。河出書房一九五一年出版,屬於《市民文庫》。譯者佐藤亮一,畢業於慶應義塾大學法學部政治學科。一九三二年,加入時事新報社,並於三六年成爲《每日新聞》的記者。在福島支局工作後,作爲軍隊記者報導中國戰線。因涉嫌持有資料而被逮捕,從四六年到次年,在北京的戰俘收容所中。回到日本後,到每日新聞東京本社工作,並開始進行翻譯活動。該部譯作,最初是在五〇年由ジープ社出版,後來由河出書房刊行之。
  • 中國民俗方言謠諺叢刊》,八冊,江蘇廣陵古籍刻印社以一九八九年五月出版。今天逛的時候,店內標價凡五千日圓。內容其實是對古代方言謠諺類書的影印。方言謠諺,有向群眾嘴裏求,和向鄉邦文獻裏求,兩種求法。個中利弊,從一九二零年代歌謠徵集運動開始,就每有爭論。按說既然是謠諺了,是群眾的真感情、真語言,無問百姓,反倒去翻古書做訓詁,有點反直覺,有種求禮於野,只爲把經註的慣性感。然而真的開始想要蒐集謠諺了,和做這些事情的人接觸了,就難免悲哀地發現大家最終還是陷入到一種歷史的漩渦裏,恐慌於俗世生活、俗世語言的不厚重,而要從古籍找東西爲自己背書,證明其有來有自,傳承有序,焉乃正確。甚者攘除異己,扶出一個正來,然後守著正在那邊創新,我則不知道該說什麼好了。
  • 廣東語詞典》,臺灣總督府編。當日看到的是國書刊行會在一九九三年十一月復刻的版本。觀編者單位即知,是日據時期的著作。標題說的「廣東語」,其實指的是臺灣客家話。翻開詞典,也很容易看到客家話的一個特徵詞「个」(音「gai」,意即「的」,原書用假名注音)。當時有司統計族裔,客家人就被登記爲「廣東人」——雖然客家人不盡然都來自廣東。(順帶一提,臺灣客語已有在線詞典語料庫,熱心有志,居功厥偉。)
  • 《現代支那語の科學》(現代漢語的科學)。我乍一看以爲是研究當時漢語裏的科學術語的(其實若然,標題不能這麼寫),然後從中可能可以看出一些近代東亞細亞詞彙與知識的流動的真趣來;但實際上是研究現代漢語(這個「現代」其實是民國大陸時期了)的。有講述北京音打敗南京音成爲正統的故事,也有對「現代」漢語的語法學描述。
  • 宣教師漢文小説の研究》(傳教士漢文小說研究),宋莉華著,鈴木陽一監譯,青木萌譯。這本的中文原著,我滿七世求不得,今天反而讓我撞見日譯本了。居然有日譯本,大概是日本研究界也把注意力放過來了?我能聯想到的相關研究,除了近代的交涉史這種顯而易見的關鍵詞,大概就是文類的輸入、語詞與知識的流動、特定文體對外來思想、價值的收編,這樣的了。另外一提「監譯」,這也是日本特色,華語世界少見。最後買了這本,售價是碼洋的一半左右。

接著去了波多野書店。店內則與前一家大不同,賣的是日本相關書籍了——歷史方面等等。在這裏買了:

  • 《蹇蹇錄》,政治家陸奧宗光的自傳回憶錄。《》:「王臣蹇蹇,匪躬之故」。書名自焉。意即大臣爲了國君,不避艱險。《錄》中有提到朝鮮東學黨起義、甲午戰爭、馬關條約、三國干涉還遼。初於一八九六年刊行。
  • 《北槎聞略》,桂川甫周著。昔大黑屋光太夫口述俄國風土,甫周聽而記之,厥有此帙。一七九四年編成。凡正文十有一卷,附錄一卷,衣類器什圖等二軸,地圖十頁。

凡兩本。皆屬岩波文庫。都是高中時候就聽聞,想著有日能一睹的書了。因爲實在是對這個曾經同樣通行漢文的國家,如何面對近代化浪潮的,留下了哪些時代的肉筆,而感到興趣。

長島書店。店內文學的書佔不少,大概可分爲日本文學,以及華語文學(的日譯,及其在日本、以日語寫就的研究著作)。

這種街邊而立的書棚,也是神保町的風景了。書棚上一般擺的是定價便宜——一兩百日元左右——的書,當然也有寫重量級全集擺在櫥櫃上。過路行人可以隨意駐足,翻閱,有興趣的話則被「誘」至店內。到了大雨時節,店員慌忙從店內擁出,爲書棚套上塑料膜,或者拉上防水帘,也是一種在地的風物詩了

文華堂。滿櫥子都是戰爭相關的書籍。近代以來、二戰爲止的書又佔了絕大部分——例如滿蒙問題舊日軍等。在此之前的,例如剛步入近代時的削藩,也有見到相關書籍。

中川書店。這本書基本可以說是迎合日本大部分中年男人趣味的書店了——大人的教養,曾經的日本有多好,日本該往何處去之類。

南海堂書店。以日本史的書籍爲主,其中大量近代史內容。

神田古書中心導覽牌

之後進到了神田古書センター(神田古書中心)。是一棟大樓,一到五層都是舊書店。一層是書肆高山本店。店中書類,跨度很大,趣味性質很強。一半是日本傳統戲曲,剩下一半是廚藝、武術(日本武道、中國武術——少林拳法、氣功等)、書道字帖之類。

二層爲漫畫店——夢野書房。大部分都是上了年頭的漫畫單行本、雜誌,紙面都有些泛黃。然而有一本《鬼滅之刃》,堂而皇之立在中間,竟毫無違和感。

三層爲鳥海書房,主打自然主題,動植物、本草、釣魚相關。四層爲梓書房,教育關聯。

みわ書房門口

五層爲みわ書房,都是舊童書。有過道通往薰風花乃堂,爲古物、礦物關聯,牆上也掛了一些植物畫。

古書中心旁邊,是神保町ブックセンター(神保町圖書中心)。一層爲書店+咖啡店,可以在店內消費飲食,一邊喝咖啡一邊從壁櫥上取書看;也可以只買書;也可以二者兼有。

二層是秦川堂書店。店內裝潢頗爲考究。店內的古書,有百年前的教科書、老文獻等。此外有老地圖、經年但無字跡的美術明信片、舊觀光手冊、舊溫泉攻略、舊書籤等古物,即便不是專門的收藏家,拾其一二,以爲裝點,也頗雅緻。

神保町圖書中心牆上的地圖

神保町一帶不止舊書店、藝術品店,一路逛下來,還有看到家古著店。

街角拐彎後,到了大雲堂書店。售書以日本史爲主,也有書道的內容。

明倫館書店,屬於自然科學系(雖然門口裝有文學賞的應徵廣告),內爲國內外的自然科學、建築、風景園林讀物。想到以前朋友來日本看望我,其中有學習風景園林者,我也有帶他們來這裏逛。

一誠堂書店。賣日本文學的書,也有賣日本近代以來出版事情的書。對於出版宅、書物宅(有這類宅的吧?)來說,應會感到興奮。看到書店的棕色櫃檯,我就想起一段往事。那時候我第一次來神保町,到這邊興奮地挑書,結帳的時候發現帶的錢不夠,還差一兩百日元。店頭的老爺爺問我是不是學生,從哪裏來,在哪裏唸書,教我務必勤勉於學習,然後居然把這不足的錢給免了。這實在是讓我很意外,我都做好割愛的準備了。想來實在暖心。

澤口書店的書,則與以下界隈相關:鐵道、電影、思想。當然也有一些日本文學作品(例如宮澤賢治)的初版。

不遠處,小宮山書店令我十分震撼。這家不純賣書。一層就是舊電影海報、畫集、寫真集、單幅畫作、單幅寫真等,陳列於櫥櫃,掛於壁上待沽。但如是則已矣。登到二層,簡直是三島樂園。牆上貼著三島由紀夫的照片(其中有與川端康成同框的照片),賣有三島文學研究的著作、三島由紀夫的真跡。其中一幅,是縱書「三島由紀夫」五字。一幅寫著:

鍊武

又一幅寫著:

處卋若大夢

太白。讀之慨然。

三層則是一些前衛藝術。四層未去,震撼而離店。

最後從神保町車站上車,結束了一日的覯書之旅。


當然,神保町一帶的書店,遠不止這些。有些人統計爲四百家,有些統計則爲130家。今天隨便走走逛逛,已感到有些累。要全部逛個遍,相信需要時間。

今天所逛過的書店,也並沒有盡記在上,只是挑了些特點殘留在腦海中的寫了。其實神保町有兩家在愛書人士當中相當有名的中文書店——東方書店內山書店

一直幻想在這樣的舊書店中打工的樣子。整理這些老書,與不同時代、地域的思想們對話,與懂行的顧客暢聊,與乘興而來的路人介紹自己的所愛。翻書,對客,個中趣事還可與網上書友分享。多事一件美事。以前關注過一位在這樣的書店裏打工的博主,後來他回中國任教了。往後沒在網上再看到相關的分享了。

🔲 ⭐

1959年《閩東農業小手冊》

福建省福安市农业局编印。

2018年11月,偶于网间拾得,公诸维基文库。按原文献字形录入,原文用简化字的就录简化字,用传统字形的也录传统字形。

原题《閩东农业小手册》。


三、阳历推算和节气

阳历推算歌

阳历眞方便,人人会推算。一年十二月,三百六十天。

月大三十一,月小三十天,七前单月大,八后单月小。

二月二十八,閏年加一天。何时始逢閏,四除公历年。

农家阳历二十四节氣歌

春雨惊春清谷天,夏滿芒夏暑相連;

秋处露秋寒霜降,冬雪雪冬小大寒;

本月两节日期定,年年如此少变更;

上半年来六廿一,下半年来八廿三;

人人熟記节气歌,按时耕种过豐年。

四、氣象資料

地名平均初、終霜間日数初日終日統計年份
平均初日

(月、日)

历史最早初日

(年、月、日)

平均終日

(月、日)

历史最迟終日

(年、月、日)

寿宁

(鰲阳)

136日11月3日1958年10月27日3月1?日1957年4月4日1956—1958年
福鼎

(桐山)

104日12月2日1954年11月19日3月16日1956年4月4日1953—1957年
福安

(城关)

75日12月13日1942年10月23日2月?3日1943年4月9日1937—1958年
宁德

(三都)

9日1月25日1954年12月13日2月3日1956年2月20日1953—1957年
罗源

(桂林)

92日12月12日1958年11月23日3月14日1957年4月4日1956—1958年
长乐

(鶴上)

36日1月4日1955年12月1日2月8日1955年2月22日1951—1958年
各地历年平均霜期

(阙如)

名称氮磷鉀含量%每百斤折合每百斤折合每百斤折合
硫酸銨斤数人粪尿斤数过磷酸鈣斤数蒸骨粉斤数硫酸鉀斤数草木灰斤数
2.1333.71400.06.65.94.442.?
1.3430.41260.05.85.22.82?.?
1.4022.1920.012.411.12.928.0
1.235.3220.01.81.72.624.0
1.3027.91660.015.013.42.72?.0
1.9024.01000.010.09.04.038.0
0.9716.4680.08.27.32.019.4
1.781.2470.015.013.53.73.5
1.3017.3720.06.55.82.726.0
1.079.6400.03.63.22.221.4
0.889.7400.01.21.01.817.6
人粪尿0.500.100.302.4100.00.50.40.66.0
其中:人粪1.000.300.404.8200.0105.01.30.88.0
人尿0.500.050.202.4100.00.20.20.44.0
猪粪0.600.450.502.9120.02.22.01.010.0
猪尿0.300.130.201.460.00.60.60.44.0
牛粪0.300.250.101.460.01.21.10.22.0
牛尿0.801.403.8160.02.928.0
馬粪0.500.350.302.4100.01.81.60.66.0
馬尿1.201.505.8240.03.130.0
羊粪0.750.600.303.6150.03.02.70.66.0
羊尿1.400.052.206.7280.00.20.24.644.0
鳮粪1.631.540.807.8326.07.76.91.817.0
鴨粪1.001.400.624.8200.07.06.31.312.4
鵝粪0.550.540.952.6110.02.72.42.019.0
粪砒0.7023.003.4140.0115.0103.0
蚕沙1.450.250.118.0290.01.21.10.22.2
粪尿肥对幾种常用肥料析合率
🔲 ⭐

WordPress站点部分地出现“严重错误”的一些可能的解法

Wide crayon drawing of a gender-neutral individual looking perplexed at a computer screen displaying the words 'critical error'. The ambiance is tense, with dim lighting highlighting the sharp contrast between the screen's glow and the surrounding darkness.

解题

有时候,自托管WordPress站点可能会部分地出现“严重错误”的报错,报错文如下:

There has been a critical error on this website.

题目里这个“部分地”,意思就是并非全站都崩盘了。可能只是仪表盘无法访问,报错。或者是文章存档或仪表盘的文章列表加载到两三页后,加载不下去了,为空;但是文章并没有消失,通过一个一个地点击“前一篇文章”还是能够访问得到。

一个可能的成因

部分地出现“严重错误”,成因很复杂、多样。一个可能的成因,是服务器内存、存储空间不足,导致程序性能受到了限制。

一些可能的解法

可以考虑提高PHP内存上限。默认为128M,可按需调到256M、512M甚至更多。

服务器的存储空间也可以进行一些腾退,例如删除无用的系统日志文件、将WordPress的媒体文件转移到其他的云存储、图床服务(并记得修正URL)等。

还可以考虑提高SWAP大小

❌