さて、前回までで、すでにWebページは外部にはつながるようになっています。
が、管理画面をいじると、WordPressの更新ができなくなっています。
正確には、WordPressの管理画面から更新をかけようとすると、FTP接続による認証等を求められます。
ここで、FTPを開けるべきか? と思いましたが、調べてみるとWP-Config.phpに一行追加するだけでOKなようです。
というわけでさくっと追加します。
Set-Location 'C:\inetpub\wwwroot\wordpress'
Add-Content .\wp-config.php "define('FD_METHOD','direct')"
これでFTP認証を求められなくなります。
さあ、更新・・・・・・と思うと、今度は
「いくつかのファイルをコピーできないため、最新版のインストールができません。これはたいていの場合、ファイルのパーミッションが適切でないことが原因です。」のエラーが。
こちらも調べてみるとパーミッション、もといファイル・フォルダ権限が問題のようです。
基本的には一つ一つのファイル、フォルダ毎に権限を設定していくべきですが、どうやら時々対象となるファイル、フォルダが変わるようです。毎回毎回調べて一つ一つ設定していくのは一苦労です。
そこで、マズイやり方ではありますが、アップデートの最中だけ、全ファイル・フォルダに書き込み権限を振ることにします。
下記のコマンドで、WordPress以下にUSERSに書き込み権限がくっつきます。
$fPath = "C:\inetpub\wwwroot\wordpress"
$acl = Get-Acl $fPath
$uName = 'USERS'
$fControl = [System.Security.AccessControl.FileSystemRights]::Write
$iFlags = [System.Security.AccessControl.InheritanceFlags]::ContainerInherit,[System.Security.AccessControl.InheritanceFlags]::ObjectInherit
$pFlags = [System.Security.AccessControl.PropagationFlags]::InheritOnly
$type = [System.Security.AccessControl.AccessControlType]::Allow
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($uName,$fControl,$iFlags,$pFlags,$type)
$acl.SetAccessRule($rule)
$acl | Set-Acl $fPath
これでアップデートできるようになります。
アップデート完了後は、すぐに下記コマンドで書き込み権限を外します。
上記コマンドとの違いは、$rule変数に渡す引数が空(NULL)になっていること。
(※本当は書き込み権限を削除したかったのですが、やり方わからず・・・・・・)
$fPath = "C:\inetpub\wwwroot\wordpress"
$acl = Get-Acl $fPath
$uName = 'USERS'
$fControl = [System.Security.AccessControl.FileSystemRights]::Write
$type = [System.Security.AccessControl.AccessControlType]::Allow
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($uName,$fControl,,,$type)
$acl.SetAccessRule($rule)
$acl | Set-Acl $fPath
これでまずは安心。
プラグインやテーマの拡張についてはまだ調べていませんが、まあ概ねこれでいける気がします。
いけなかったらごめんなさい。
今回のまとめ。
うむ、シャルが可愛い。