Notwendiger Benutzer, Gruppe und Berechtigungen für Core-Updates

Welche Benutzer, Gruppen und Berechtigungen von Dateien und Ordnern benötige ich für Core-Updates?

Einstellungen testen

Ich habe alles versucht, was mir das Handbuch empfohlen hat. Hier sind einige Testeinstellungen, die ich verwendet habe, das Setup wurde rekursiv auf der WordPress-Installation verwendet.

  • Fall A: Der Besitzer verfügt über Lese- / Schreibberechtigungen.
  • Fall B: Der Besitzer und die Gruppe haben Lese- / Schreibberechtigungen.

Jeder obige Berechtigungsfall wurde mit dem folgenden Benutzer- und Gruppen-Setup versucht.

  1. Besitzer: Apache | Gruppe: Apache
  2. Besitzer: Apache | Gruppe: FTP-Benutzer
  3. Besitzer: FTPuser | Gruppe: FTP-Benutzer
  4. Besitzer: FTPuser | Gruppe: Apache

Testergebnisse

  • 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 

Diese Updates waren immer ein großes Problem für WordPress, ich möchte dies klären, lasst uns eine allgemeine Lösung finden! Die Installation wird auf einem CentOS 6.6-Server gehostet, auf dem DirectAdmin ausgeführt wird.

BEARBEITEN:

Die benutzerdefinierte Konfiguration unter wp-config.php, die ich für diese Tests verwendet habe, enthält Folgendes:

 $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); 

Solutions Collecting From Web of "Notwendiger Benutzer, Gruppe und Berechtigungen für Core-Updates"

Yeah! Ich habe endlich eine Lösung gefunden!

Der Trick bestand darin, alle Dateien und Ordner als Besitzer und Gruppe für den Apache-Benutzer festzulegen. ../wp-content/upgrade/ Sie sicher, dass Sie ein Verzeichnis für den temporären Speicher haben und dass Sie auch das Verzeichnis ../wp-content/upgrade/ haben ../wp-content/upgrade/ . Das ist das Einzige, was mir an der Kompatibilität mit der wp-config.php nicht bekannt ist. Aber du brauchst eine konstante FS_METHOD Einstellung wie @TheDeadMedic.

Um das Leben einfacher zu machen, habe ich ein Bash-Skript erstellt, das ziemlich einfach zu benutzen ist. Es wird alles außer der wp-config.php in die wp-config.php Sie müssen selbst das Folgende zu dieser Datei hinzufügen.

 // Some static information, so fill this in correctly. $root='public_html'; define('FTP_USER',''); define('FTP_PASS',''); // 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); 

Als das bash-Skript funktioniert das wie folgt: bash script.sh $ 1 $ 2

  • $ 1 : Wählen Sie eine Aktion aus, die ausgeführt werden soll
    • Hilfe: Zeigen Sie, wie Sie dieses Skript verwenden.
    • config: Konfigurieren Sie eine bereits vorhandene WP-Installation korrekt, eine, die im CURRENT-Verzeichnis installiert ist.
    • neu: Installieren Sie einen neuen WP-CMS im CURRENT-Verzeichnis und konfigurieren Sie ihn anschließend korrekt.
  • $ 2 : der Name des öffentlichen Verzeichnisses, damit wir erkennen können, wo Dateien privat sind. Der Standardwert und auch am häufigsten ist public_html Lassen Sie diesen Parameter leer, wenn Ihr Server dies ebenfalls als Standard verwendet.

Und jetzt das Bash-Skript selbst! : 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 

TIPP : Um es überall auf dem System verfügbar zu machen, geben Sie es einfach in / usr / local / bin / ein, wenn Sie fertig sind, können Sie einfach $ ausführen. Stellen Sie sicher, dass der "Skriptname" eindeutig ist.