De quel utilisateur, groupe et autorisations de fichiers et dossiers ai-je besoin pour les mises à jour principales?
J'ai tout essayé le manuel m'a recommandé de. Voici quelques configurations de test que j'ai utilisées, la configuration a été utilisée de manière récursive sur l'installation de WordPress.
Tous les cas d'autorisation ci-dessus ont été essayés avec les configurations d'utilisateur et de groupe suivantes.
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
Ces mises à jour ont toujours été un gros problème pour WordPress, je tiens à clarifier ceci: trouvons une solution générale! L'installation est hébergée sur un serveur CentOS 6.6 exécuté avec DirectAdmin.
La configuration personnalisée sur wp-config.php que j’ai utilisée pour ces tests contient les éléments suivants:
$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);
Ouais J'ai enfin trouvé une solution!
L'astuce consistait à définir tous les fichiers et dossiers de leur propriété et de leur groupe sur l'utilisateur Apache. Assurez-vous que vous avez un répertoire pour le stockage temporaire et que vous devez également disposer du répertoire ../wp-content/upgrade/
. Ensuite, à votre wp-config.php
, c’est la seule chose dont je ne suis pas au courant concernant la compatibilité. Mais vous aurez besoin de la constante FS_METHOD
définie sur direct
, comme le suggère @TheDeadMedic.
Pour rendre la vie plus facile, j’ai créé un script bash qui est assez facile à utiliser. Il mettra tout en place sauf le wp-config.php
, vous devrez ajouter ce qui suit à ce fichier par vous-même.
// 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);
Que le script bash, cela fonctionne comme suit: bash script.sh $ 1 $ 2
public_html
, laissez ce paramètre vide si votre serveur l’utilise également par défaut.Et maintenant, le script bash lui-même! :RÉ
# 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: pour le rendre disponible partout sur le système, placez-le simplement dans/usr/local/bin/lorsque cela sera fait, vous pourrez le faire. juste exécuter $ <script name> **$1 $2**
. Assurez-vous que le "nom de script" est unique.