非常感謝感謝您花時間幫我解決這個問題:
我在共享的 Bluehost 託管帳戶上託管了一個 Wordpress 部落格。我目前正在使用 Amazon Linux AMI 將其手動遷移到 AWS Elastic Beanstalk 建立的 EC2 執行個體。使用 SSH,我:
- 將資料庫匯出並匯入到新伺服器的 MySQL 資料庫中
- 複製所有權為 ec2-user:ec2-user 的所有 WordPress 文件
- 將所有目錄權限設定為 755,所有檔案權限設定為 644。
至此,部落格的索引載入完全正常。但是,當我嘗試單擊以前使用漂亮永久鏈接的帖子之一時,Wordpress 無法加載它,因為我沒有使用 mod_rewrite 的 .htaccess 文件(請注意,不能選擇傳輸原始 .htaccess) 。因此,我登入管理部分,在「設定」>「永久連結」下,嘗試重新建立 .htaccess 檔案。但是,我收到了來自 Wordpress 的消息:“如果您的 .htaccess 文件是可寫的,我們可以自動執行此操作,但事實並非如此,因此這些是您應該在 .htaccess 文件中使用的 mod_rewrite 規則。”我此時創建了一個具有適當權限的空白 .htaccess 檔案並重試,但結果相同。
此時我還注意到,在管理部分中,我無法將圖片上傳到媒體部分。從那時起,我認為這是一個所有權問題。
基於以上兩個問題,我whoami
透過php的方式shell_exec()
來判斷Wordpress正在使用哪個用戶,並了解到該用戶webapp
正在被使用。 Elastic Beanstalk 建立webapp
用於透過控制台上傳和部署新程式碼版本的使用者(但是,我使用 ec2-user 帳戶透過 SFTP 手動上傳程式碼)。從這裡我:
- 將所有 Wordpress 檔案/目錄擁有權變更為 webapp:ec2-user
- 將所有目錄權限設為 775,將所有檔案權限設為 664(這樣我作為 ec2 使用者也可以寫入它們)
至此,媒體上傳工作完美。但是,Wordpress 仍然無法建立/寫入 .htaccess 檔案。此時很沮喪,我將權限設為 777 只是為了看看這是否有效,但這也不起作用。
任何幫助是極大的讚賞。再次感謝您的寶貴時間!
答案1
Redhat/Centos 的版本?如今,SELinux 預設啟用並嚴格限制 Web 伺服器進程。輸出ls -alZ .htaccess
?httpd_sys_rw_content_t
無論舊的rwx
unix 權限為何,Web 伺服器程序都只能變更標記為 selinux 類型的檔案。用來chcon -t httpd_sys_rw_content_t .htaccess
改變。