如何讓我的 mediawiki 不再認為我禁用了 cookie?
我已經搜尋了半天來解決這個問題,但無法弄清楚。在我根據 Mediawiki 網站上的說明將我的 wiki 設為一個簡單的私人 wiki 後不久,它開始給我這個奇怪的登錄錯誤消息: Wiki 使用 cookie 登錄使用者。您已禁用 cookie。請啟用它們並重試。
如果我刪除了這些私人 wiki 設置,即使我嘗試登錄,錯誤也會消失。但我需要它成為僅供我團隊使用的私人 wiki。那我該怎麼辦?
這是我到目前為止所做的。為了安全起見,在更改後,我嘗試使用以下命令重新啟動 Apache:
- 須藤 /etc/init.d/apache2 重啟
在我的 php.ini 文件中,我有以下設置:
- session.save_path = “/var/lib/php5”
- session.cookie_secure = 安全
- session.cookie_path = /tmp session.cookie_domain = 我的伺服器的內部 URL(我應該設置這個嗎?這個欄位之前是空白的,但沒有被註釋掉)
- session.referer_check = 關閉
我執行以下命令以確保文件夾是可寫的:
- sudo chmod -R 1777 /var/lib/php5
- 須藤 chmod -R 1777 /tmp
在我的 LocalSettings.php 文件中,我在設置文件的底部添加了以下內容:
- session_save_path(“tmp”);
- $wgSessionsInObjectCache = true;
- $wgMainCacheType = CACHE_ANYTHING;
- $wgDebugToolbar = 真;
- wgDebugLogFile = ‘/var/log/mediawiki/mediawiki.log’;
- $wgShowExceptionDetails = 真;
- $wgShowDebug = 真;
- $wgDevelopmentWarnings = true;
對於上面的 tmp,我創建了文件夾 /etc/mediawiki/tmp 並且還執行了以下命令:
- sudo chmod -R 1777 /etc/mediawiki/tmp
我知道 cookie 正在通過瀏覽器,因為我可以在 Firebug 中看到 cookie 並驗證在 /tmp 文件夾中創建了相同的 cookie。
SSL 似乎配置正確,因為我得到了綠色鎖。
這是我嘗試登錄後的調試輸出:
調試數據:
- 開始請求
- POST /mediawiki/index.php?title=Special:UserLogin&action=submitlogin&type=login&returnto=Special:RecentChanges
- HTTP 標頭:
- 主辦方:bs-wiki.sis.org.cn
- 連接:保持活動
- 內容長度:122
- 記憶體控制:max-age=0
- 接受:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp, / ;q=0.8
- 來源:https ://bs-wiki.sis.org.cn
- 升級不安全請求:1
- 使用者代理:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36
- 內容類型:應用程序/x-www-form-urlencoded
- DNT: 1
- 參考:https ://bs-wiki.sis.org.cn/mediawiki/index.php?title=Special:UserLogin&returnto=Special%3ARecentChanges&returntoquery=
- 接受編碼:gzip,放氣
- 接受語言:en-US,en;q=0.8
- 餅乾:__gads=ID=f46767e352615a06:T=1453974579:S=ALNI_MaImAtsIj8Xb-3kERZtmSWx82DxNA;bs_wikiUserName=Rpark1; bs_wikiLoggedOut=20160128105049; bs_wiki_session=3fck92pn1uq1l1s852oq6rfdl3
- 記憶體:SqlBagOStuff
$$ main $$SqlBagOStuff$$ message $$SqlBagOStuff$$ parser $$
- 正在連接到 localhost bs_wiki…
- Profiler::instance 在沒有 $wgProfiler 的情況下呼叫$$ ‘class’ $$設置,為安全起見回退到 ProfilerStub
- 連接到本地主機 bs_wiki。
- 正在連接到 localhost bs_wiki…
- 連接到本地主機 bs_wiki。
- DatabaseBase::query: 寫入完成:從
objectcache
哪裡刪除 keyname = ‘bs_wiki:stats:request_with_session’- LocalisationCache:使用儲存 LCStore_DB
- 不存根 $ wgParser on call of $ wgParser::setFunctionHook 來自未知
- 解析器:使用預處理器:Preprocessor_DOM
- 完全初始化
- 不存根 $ wgAuth on call of $ wgAuth::validDomain 來自未知
- IP:172.18.12.59
- MessageCache::load: Loading en… 從全域記憶體中獲取
- 不存根 $ wgLang on call of $ wgLang::_unstub 來自未知
- MWCryptRand::realGenerate: 為 LoginForm::setLoginToken/MWCryptRand::generateHex/MWCryptRand::realGenerateHex/MWCryptRand::generate/MWCryptRand::realGenerate 生成加密隨機字節
- MWCryptRand::realGenerate: openssl_random_pseudo_bytes 生成了 16 個字節的強隨機性。
- MWCryptRand::realGenerate: 緩衝區中剩餘 0 個字節的隨機性。
- 未找到類 SkinVector;跳過載入
- 未找到類 PEAR_Error;跳過載入
不知道為什麼它現在可以工作,但是從頭開始並回到https://www.mediawiki.org/wiki/Manual:Preventing_access#Simple_private_wiki上的原始說明,現在它可以工作了。
好吧,不是完全從頭開始,我沒有恢復對 php.ini 的更改。所以不確定是否修復了它。無論哪種方式,它現在都在工作,所以我很高興…. :)
Basd82 其他地方報告您必須
session.referer_check = Off
在 php.ini 中設置。
session_save_path("tmp")
肯定是錯的,你的目錄叫做/tmp
. (如果您按照JesseG17 的建議,您忘記了第 3 步。)但是,與$wgSessionsInObjectCache = true
應該session.save_path
無關。你有
$wgMainCacheType = CACHE_ANYTHING
,但你檢查過記憶體是否真的有效嗎?遵循記憶體手冊並安裝適當的對象記憶體(這總是一個好主意)。