コアアップデートに必要なファイルおよびフォルダのユーザー、グループ、およびアクセス許可
私はすべて マニュアル を私に勧めてみました。これが私が使ったいくつかのテストセットアップで、セットアップはWordPressのインストールで再帰的に使われました。
上記のすべての許可ケースは、次のユーザーとグループの設定で試行されました。
1A:
Could not create directory.
1B:
Could not create directory
2A:
Could not create directory.
2B:
The update cannot be installed because we will be unable to copy some files. This is usually due to inconsistent file permissions.: wp-admin/includes/update-core.php
3A:
Warning: touch(): Unable to create file /home/FTPuser/domains/domain.name/public_html/wordpress/wp-content/uploads/wordpress-4.tmp because Permission denied in /home/FTPuser/domains/domain.name/public_html/wordpress/wp-admin/includes/file.php on line 155
Warning: unlink(/home/FTPuser/domains/domain.name/public_html/wordpress/wp-content/uploads/wordpress-4.tmp): No such file or directory in /home/FTPuser/domains/domain.name/public_html/wordpress/wp-admin/includes/file.php on line 457
Download failed.: Destination directory for file streaming does not exist or is not writable.
3B:
Warning: touch(): Unable to create file /home/FTPuser/domains/domain.name/public_html/wordpress/wp-content/uploads/wordpress-4.tmp because Permission denied in /home/FTPuser/domains/domain.name/public_html/wordpress/wp-admin/includes/file.php on line 155
Warning: unlink(/home/FTPuser/domains/domain.name/public_html/wordpress/wp-content/uploads/wordpress-4.tmp): No such file or directory in /home/FTPuser/domains/domain.name/public_html/wordpress/wp-admin/includes/file.php on line 457
Download failed.: Destination directory for file streaming does not exist or is not writable.
4A:
Warning: touch(): Unable to create file /home/FTPuser/domains/domain.name/public_html/wordpress/wp-content/uploads/wordpress-4.tmp because Permission denied in /home/FTPuser/domains/domain.name/public_html/wordpress/wp-admin/includes/file.php on line 155
Warning: unlink(/home/FTPuser/domains/domain.name/public_html/wordpress/wp-content/uploads/wordpress-4.tmp): No such file or directory in /home/FTPuser/domains/domain.name/public_html/wordpress/wp-admin/includes/file.php on line 457
Download failed.: Destination directory for file streaming does not exist or is not writable.
4B:
The update cannot be installed because we will be unable to copy some files. This is usually due to inconsistent file permissions.: wp-admin/includes/update-core.php
これらのアップデートは常にWordPressにとって大きな問題でした。これを明確にしてみましょう。インストールは、DirectAdminを実行しているCentOS 6.6サーバーでホストされています。
これらのテストに使用したwp-config.phpのカスタム設定には、次のものが含まれています。
$root='public_html';
define('FTP_USER','username');
define('FTP_PASS','password');
$addr=$_SERVER['SERVER_ADDR'];
$name=$_SERVER['SERVER_NAME'];
$Host=$_SERVER['HTTP_Host'];
$https=$_SERVER['HTTPS'];
$protocol=(!empty($https)&&$https!=='off'||$_SERVER['SERVER_PORT']===443)?'https://':'http://';
$abspath=(strpos(getcwd(),'/wp-admin')!==FALSE)?substr(getcwd(),0,strrpos(getcwd(),'/wp-admin')):getcwd();
$relpath=substr($abspath,strrpos($abspath,$root)+strlen($root));
define('WP_HOME',$protocol.$Host.$relpath);
define('WP_SITEURL',$protocol.$name.$relpath);
define('FS_CHMOD_DIR',(02755&~umask())); //FOR CASE A
define('FS_CHMOD_FILE',(0664&~umask())); //FOR CASE A
define('FS_CHMOD_DIR',(02775&~umask())); //FOR CASE B
define('FS_CHMOD_FILE',(0664&~umask())); //FOR CASE B
define('FS_METHOD','ftpext');
define('FTP_BASE',$abspath);
define('FTP_Host',$addr);
うん!私はついに解決策を見つけました!
トリックは、すべてのファイルとフォルダの所有権とグループをApacheユーザーに設定することでした。一時記憶用のディレクトリがあること、および../wp-content/upgrade/
ディレクトリも必要であることを確認してください。あなたのwp-config.php
よりもこれが私がそれの互換性について知らない唯一のものです。しかし、@ TheDeadMedicが推奨するように、定数FS_METHOD
をdirect
に設定する必要があります。
使いやすくするためにbashスクリプトを作成しました。これは、wp-config.php
を除いて、すべて自分でこのファイルに追加する必要があります。
// Some static information, so fill this in correctly.
$root='public_html';
define('FTP_USER','<username>');
define('FTP_PASS','<password>');
// This is dynamically configured. You won't have to edit.
$addr=$_SERVER['SERVER_ADDR'];
$name=$_SERVER['SERVER_NAME'];
$Host=$_SERVER['HTTP_Host'];
$https=$_SERVER['HTTPS'];
$protocol=(!empty($https)&&$https!=='off'||$_SERVER['SERVER_PORT']===443)?'https://':'http://';
$abspath=(strpos(getcwd(),'/wp-admin')!==FALSE)?substr(getcwd(),0,strrpos(getcwd(),'/wp-admin')):getcwd();
$relpath=substr($abspath,strrpos($abspath,$root)+strlen($root));
$tmppath=substr($abspath,0,-(strlen($relpath)+strlen($root))).'tmp';
define('WP_HOME',$protocol.$Host.$relpath);
define('WP_SITEURL',$protocol.$name.$relpath);
define('FS_CHMOD_DIR',(02755&~umask()));
define('FS_CHMOD_FILE',(0644&~umask()));
define('WP_TEMP_DIR', $tmppath);
define('FS_METHOD','direct');
define('FTP_BASE',$abspath);
define('FTP_Host',$addr);
Bashスクリプトよりも、これは次のように機能します。bash script.sh$ 1 $ 2
public_html
です。サーバーがこれもデフォルトとして使用する場合は、このパラメーターを空のままにしてください。そして今bashスクリプト自体! :D
# If requested install WP
if [ "$1" = new ]; then
wget https://wordpress.org/latest.tar.gz
tar -xvf latest.tar.gz
mv -f wordpress/* .
rm -rf wordpress/ latest.tar.gz
fi
if [[ "$1" = help || -z "$1" ]]; then
echo "Usage: install.sh \$1 \$2"
echo "\$1: default=config, new=install new WP."
echo "\$2: default=public_html, *=root folder (must be a parent)."
else
# Define root directory
if [ ! -z "$2" ]; then
root=$2
else
root='public_html'
fi
# Define root path
dir=`pwd -P`
tmp=${dir%%$root*}"tmp"
# Define Apache user
Apache_USER=$(ps axho user,comm|grep -E "httpd|Apache"|uniq|grep -v "root"|awk 'END {if ($1) print $1}')
# Create missing directories
if [ ! -d "$tmp" ]; then
mkdir "$tmp"
chown -R "$Apache_USER":"$Apache_USER" "$tmp"
fi
if [ ! -d wp-content/upgrade ]; then
mkdir -p wp-content/upgrade
fi
# Setup group and ownership for the installation
chown -R "$Apache_USER":"$Apache_USER" wp-* index.php xmlrpc.php .htaccess
# Make sure the chmoding is correct
find wp-* index.php xmlrpc.php .htaccess -type f -exec chmod 644 {} \;
find wp-* -type d -exec chmod 755 {} \;
# Remove unwanted WP files
rm -f license.txt readme.html
fi
TIP:システムのいたるところで利用できるようにするには、それを/ usr/local/bin /に置くだけです。 $ <script name> **$1 $2**
を実行するだけです。 「スクリプト名」が一意であることを確認してください。