Wie stelle ich die richtigen Berechtigungen für Magento auf dem Server ein?


7

Ich habe viele Probleme mit Berechtigungen.

Im Magento Admin Panel:

Ihr Webserver ist falsch konfiguriert. Auf Konfigurationsdateien mit vertraulichen Informationen kann daher von außen zugegriffen werden. Bitte wenden Sie sich an Ihren Hosting-Anbieter.

Wenn ich Bilder von cms hochlade:

Das Verzeichnis kann vom Server nicht beschrieben werden.

Wenn jemand auf diese URL zugreift: http://example.com/app/etc/modules/

Sie können leicht Konfigurationseinstellungen sehen.

Verwenden eines FTP-Kontos: Ich kann keine Datei überschreiben und manchmal kann ich keinen lokalen Ordner über FTP auf den Server kopieren.

Mein Bewerbungsort ist /var/www/html.

Mit Ratschlägen von erfahrenen Entwicklern führe ich folgende Befehle aus:

find <foldername> -type d -exec chmod 755 {} \; 
find <foldername> -type f -exec chmod 664 {} \;

und unten sind aktuelle Berechtigungen für jeden Ordner vorhanden.

drwxr-xr-x 12 root     root     4096 Jun 10 13:06 var
drwxr-xr-x  3 root     root     4096 Jun 10 13:06 www
drwxr-xr-x 15 www-data www-data 4096 Jun 18 07:29 html

root@web-server-magento:/var/www/html# ls -l

total 14644
-rw-rw-r--  1 www-data www-data     2834 Nov 26  2013 api.php
drwxr-xr-x  6 www-data www-data     4096 Jun 17 11:16 app
-rw-rw-r--  1 www-data www-data     2831 Nov 26  2013 cron.php
-rw-rw-r--  1 www-data www-data      717 Nov 26  2013 cron.sh
-rw-rw-r--  1 www-data www-data  2454234 Oct 26  2011 data.sql
drwxr-xr-x  8 www-data www-data     4096 Jun 11 07:21 downloader
drwxr-xr-x  3 www-data www-data     4096 Nov 26  2013 errors
-rw-rw-r--  1 www-data www-data     1150 Nov 26  2013 favicon.ico
-rw-rw-r--  1 www-data www-data     5979 Nov 26  2013 get.php
drwxr-xr-x  2 www-data www-data     4096 Nov 26  2013 includes
-rw-rw-r--  1 www-data www-data    11510 Jun 10 13:06 index1.html
-rw-rw-r--  1 www-data www-data     2642 Nov 26  2013 index.php
-rw-rw-r--  1 www-data www-data     2366 Nov 26  2013 index.php.sample
-rw-rw-r--  1 www-data www-data     6441 Nov 26  2013 install.php
drwxr-xr-x 12 www-data www-data     4096 Jun 18 06:28 js
drwxr-xr-x 13 www-data www-data     4096 Nov 26  2013 lib
-rw-rw-r--  1 www-data www-data    10421 Nov 26  2013 LICENSE_AFL.txt
-rw-rw-r--  1 www-data www-data    10679 Nov 26  2013 LICENSE.html
-rw-rw-r--  1 www-data www-data    10410 Nov 26  2013 LICENSE.txt
-rw-rw-r--  1 www-data www-data    10327 Jun 11 14:48 logo.png
-rw-rw-r--  1 www-data www-data     1319 Nov 26  2013 mage
drwxr-xr-x 13 www-data www-data     4096 Jun 18 07:29 media
-rw-rw-r--  1 www-data www-data      886 Nov 26  2013 php.ini.sample
drwxr-xr-x  2 www-data www-data     4096 Nov 26  2013 pkginfo
-rw-rw-r--  1 www-data www-data   585086 Nov 26  2013 RELEASE_NOTES.txt
drwxr-xr-x  2 www-data www-data     4096 Nov 26  2013 shell
drwxr-xr-x  5 www-data www-data     4096 Nov 26  2013 skin
drwxr-xr-x  9 www-data www-data     4096 Jun 18 06:57 var

Bitte kommentieren Sie, wenn zusätzliche Informationen benötigt werden.


Vielen Dank für Ihre Antwort. Ich habe Magento Cleanup versucht. Immer noch das gleiche Problem. Ich denke, Problem mit der Apache-Konfiguration oder der Htacces-Datei.
Sivakumar

Antworten:


14

Bitte überprüfen und verifizieren Sie die folgenden Schritte:

  1. Überprüfen Sie, ob Ihr Server mit Magento kompatibel ist. Laden Sie die Datei von diesem Link herunter. Überprüfen Sie die Magento Server-Kompatibilität und befolgen Sie die Anweisungen.

  2. Suchen Sie .htaccessin jedem Ordner und auch im Stammverzeichnis nach. Magento hat .htaccessin fast allen Ordnern. Überprüfen Sie den Medienordner, falls das Problem mit dem Image auftritt

  3. Führen Sie die folgenden Serverbefehle in Ihrem Projektordner aus:

    find ./ -type f | xargs chmod 644
    find ./ -type d | xargs chmod 755
    

    Dies gibt 644 Berechtigungen für Dateien und 755 für Ordner.

  4. Geben Sie als Nächstes die 777-Berechtigung für var und den Medienordner, wenn das Problem weiterhin besteht. Verwenden Sie dazu die folgenden Befehle:

    chmod -Rf 777 var
    chmod -Rf 777 media
    
  5. Überprüfen Sie auch die HTML-Ordnerberechtigung Ihres Servers. Es sollte 755 sein.

Hoffe, dies sollte Ihr Problem lösen.


Ein Hinweis zu .htaccess-Dateien. Diese sind nur erforderlich, wenn der Apache-Webserver verwendet wird. .htaccess-Dateien in jedem Ordner sind für die Apache-Leistung schlecht, da diese für jeden Ordner überprüft werden müssen. Weitere Informationen finden Sie unter httpd.apache.org/docs/2.2/howto/htaccess.html. Am Anfang steht eine Warnung: Sie sollten die Verwendung von .htaccess-Dateien vollständig vermeiden, wenn Sie Zugriff auf die Konfigurationsdatei des httpd-Hauptservers haben.
Sven

Danke dafür ... aber ich habe bemerkt, dass es in fast jedem Hauptordner von Magento vorhanden ist ...
Dexter

Nur für Apache erforderlich => Dies bedeutet, dass Sie geeignete Schritte unternehmen müssen, um diese Ordner durch die anderen Arten der Verwendung von Webservern zu beschränken. Die .htaccess-Dateien sind alle dazu da, den Inhalt zu schützen oder, was noch wichtiger ist, die Skriptausführung aus Ordnern mit globalem RWX zu verhindern. Die meisten Benutzer von Apache haben keinen Zugriff auf die http-Serverkonfiguration. Es ist also eine Art roter Hering, zu erwähnen, dass etwas entfernt wird, das zum Sichern des Dateizugriffs erforderlich ist, ohne ordnungsgemäß zu bestätigen, warum sie dort sind. Wichtig ist auch, Alternativen zum ordnungsgemäßen Ersetzen dieses Sicherheitsmodells anzugeben.
Fiasco Labs

immer Operation not permittedauf alle Dateien beim Laufen find ./ -type f | xargs chmod 644. Versuchte es auch mit sudo.
Amit Patel

Es scheint ein Problem mit Ihrer Serverberechtigung zu sein
Dexter

4

Bitte überprüfen Sie, ob sich Ihr FTP- und SSH-Benutzer in der www-Datengruppe befindet.

Ihre Dateien und Ordner gehören dem Benutzer und der Gruppe www-data:

-rw-rw-r--  1 www-data www-data     2642 Nov 26  2013 index.php
drwxr-xr-x 13 www-data www-data     4096 Jun 18 07:29 media

Ihre FTP-Fehlermeldung (ich kann keine Datei überschreiben) lässt mich glauben, dass Ihr FTP-Benutzer nicht zur WWW-Datengruppe gehört.

Führen Sie in der Befehlszeile aus und überprüfen Sie, zu welchen Gruppen Ihr FTP- und SSH-Benutzer gehört:

$ groups [username]

Wenn keine WWW-Daten aufgeführt sind, passen Sie die Einstellungen mit Ihrem Server-Administrator an.


4

Nach Ihrem Ermessen sollten Sie entweder alle Webserver-Dateien dem Benutzer und der Gruppe von www-data oder nur der Gruppe zuweisen. Es ist oft bequem und dennoch sicher, den Eigentümer der Dateien selbst zu bestimmen, damit Sie sie einfacher bearbeiten können, insbesondere wenn Sie solche Dateien über ein Repo verwalten möchten.

Wenn Sie beschlossen haben, alle Webserver-Dateien im Besitz und im Besitz von www-data zu machen, empfehle ich die folgenden Berechtigungen:

find /var/www/html -type d -exec chmod 755 {} \; 
find /var/www/html -type f -exec chmod 644 {} \;

find /var/www/html/var -type d -exec chmod 755 {} \; 
find /var/www/html/var -type f -exec chmod 644 {} \;

find /var/www/html/media -type d -exec chmod 755 {} \; 
find /var/www/html/media -type f -exec chmod 644 {} \;

Wenn Sie möchten, dass die Dateien einem anderen Benutzer gehören, der alles bearbeiten kann, können Sie stattdessen 775 und 664 ausführen. Was auch immer Sie tun, stellen Sie niemals etwas auf 777 ein . Sie haben selten, wenn überhaupt, einen Grund, dies zu tun. In diesem Fall wissen Sie, wer mit welcher Berechtigungsstufe auf die Dateien zugreifen soll und wer nicht, sodass Sie explizit festlegen können, was Sie benötigen, anstatt dass jeder alles lesen / schreiben / ausführen lässt.

Schließlich, und dies ist der wichtigste Schritt, möchten Sie das Verzeichnis / den Inhalt und die Inhalte für die Bereitstellung unzugänglich machen, indem Sie den .htaccessDateien erlauben , den Zugriff zu regeln. Fügen Sie einfach Folgendes hinzu, wenn Sie httpd verwenden:

<Directory /var/www/html>
  AllowOverride FileInfo Indexes Options Limit
</Directory>

Ich habe auch gerade die Anleitung zu den Eigentumseinstellungen gefunden .
Spencer Williams

3

Ich habe den Magento-Bereinigungscode zum Zurücksetzen der Berechtigungen verwendet, er hat bei mir funktioniert. Können Sie bitte versuchen, den Bereinigungscode wie folgt zu verwenden: -

<?php

## Function to set file permissions to 0644 and folder permissions to 0755

function AllDirChmod( $dir = "./", $dirModes = 0755, $fileModes = 0644 ){
   $d = new RecursiveDirectoryIterator( $dir );
   foreach( new RecursiveIteratorIterator( $d, 1 ) as $path ){
      if( $path->isDir() ) chmod( $path, $dirModes );
      else if( is_file( $path ) ) chmod( $path, $fileModes );
  }
}

## Function to clean out the contents of specified directory

function cleandir($dir) {

    if ($handle = opendir($dir)) {
        while (false !== ($file = readdir($handle))) {
            if ($file != '.' && $file != '..' && is_file($dir.'/'.$file)) {
                if (unlink($dir.'/'.$file)) { }
                else { echo $dir . '/' . $file . ' (file) NOT deleted!<br />'; }
            }
            else if ($file != '.' && $file != '..' && is_dir($dir.'/'.$file)) {
                cleandir($dir.'/'.$file);
                if (rmdir($dir.'/'.$file)) { }
                else { echo $dir . '/' . $file . ' (directory) NOT deleted!<br />'; }
            }
        }
        closedir($handle);
    }

}

function isDirEmpty($dir){
     return (($files = @scandir($dir)) && count($files) <= 2);
}

echo "----------------------- CLEANUP START -------------------------<br/>";
$start = (float) array_sum(explode(' ',microtime()));
echo "<br/>*************** SETTING PERMISSIONS ***************<br/>";
echo "Setting all folder permissions to 755<br/>";
echo "Setting all file permissions to 644<br/>";
AllDirChmod( "." );
echo "Setting pear permissions to 550<br/>";
chmod("pear", 550);

echo "<br/>****************** CLEARING CACHE ******************<br/>";

if (file_exists("var/cache")) {
    echo "Clearing var/cache<br/>";
    cleandir("var/cache");
}

if (file_exists("var/session")) {
    echo "Clearing var/session<br/>";
    cleandir("var/session");
}

if (file_exists("var/minifycache")) {
    echo "Clearing var/minifycache<br/>";
    cleandir("var/minifycache");
}

if (file_exists("downloader/pearlib/cache")) {
    echo "Clearing downloader/pearlib/cache<br/>";
    cleandir("downloader/pearlib/cache");
}

if (file_exists("downloader/pearlib/download")) {
    echo "Clearing downloader/pearlib/download<br/>";
    cleandir("downloader/pearlib/download");
}

if (file_exists("downloader/pearlib/pear.ini")) {
    echo "Removing downloader/pearlib/pear.ini<br/>";
    unlink ("downloader/pearlib/pear.ini");
}

echo "<br/>************** CHECKING FOR EXTENSIONS ***********<br/>";
If (!isDirEmpty("app/code/local/")) { 
    echo "-= WARNING =- Overrides or extensions exist in the app/code/local folder<br/>";
}
If (!isDirEmpty("app/code/community/")) { 
    echo "-= WARNING =- Overrides or extensions exist in the app/code/community folder<br/>";
}
$end = (float) array_sum(explode(' ',microtime()));
echo "<br/>------------------- CLEANUP COMPLETED in:". sprintf("%.4f", ($end-$start))." seconds ------------------<br/>";
?>

1

MAGENTO 2 Centos 7 Server

Siehe https://github.com/magento/magento2/issues/2882#issuecomment-217661873

So beheben Sie die Nachricht

Ihr Webserver ist falsch eingerichtet und ermöglicht den unbefugten Zugriff auf vertrauliche Dateien. Bitte wenden Sie sich an Ihren Hosting-Anbieter

  1. SSH - Führen Sie den folgenden Befehl von Ihrem Root-Konto aus.

    chown -R accountuser:accountusergroup /path-to-root-folderl/
  2. SSH - Führen Sie den folgenden Befehl vom Benutzer des Domänenkontos aus (nicht von Ihrem Webserverkonto wie Apache usw.).

    find . -type d -exec chmod 770 {} \; & find . -type f -exec chmod 660 {} \; && chmod u+x bin/magento
    
    chmod -R g+w /path-to-root-folderl/{pub,var}
    chmod -R g+w /path-to-root-folderl/{app/etc,vendor}
    chmod -R g+s pub/static pub/media .
    find var/generation -type d -exec chmod g+s {} \;
    find var/session -type d -exec chmod g+s {} \;
  3. SSH - Führen Sie den folgenden Befehl von Ihrem Root-Konto aus.

    chown -R domain_account_user:webservergroup /path-to-root-folderl/var
    chown -R domain_account_user:webservergroup /path-to-root-folder/app/etc
    chown -R domain_account_user:webservergroup /path-to-root-folderl/pub
    chown -R webserverUSER:webservergroup /path-to-root-folder/var/session

Dies wird diesen Fehler und viele andere Fehler beheben. Hinweis: Wenn Sie SUPHP deaktivieren, wenn Sie Magento 2 verwenden, sparen Sie sich viel Kopfschmerzen. Derzeit führe ich mod_mpm_event mit ea-apache24-mod_cgid und PHP 7 und ea-php70-php-fpm aus.

Ich hatte mein Magento 2 mit nur mod_mpm_event mit ea-apache24-mod_cgid und PHP 7 laufen lassen, bevor ich PHP-FPM hinzufügte.

Wenn Sie cpanel / apache ausführen und easyapache nicht verwenden möchten, um zu mod_mpm_event + ea-apache24-mod_cgid zu wechseln, können Sie die Shell von ssh verwenden. Führen Sie den folgenden Befehl von ssh aus. yum shell entfernen ea-apache24-mod_mpm_worker entfernen ea-apache24-mod_cgi installieren ea-apache24-mod_mpm_event installieren ea-apache24-mod_cgid ausführen beenden


Ihre Antwort gilt für Magento 2? Diese Frage ist über Magento 1 ...
7ochem

Wo in der Frage sehen Sie Magento 1 oder Magento 2? Ich habe diese Seite auf der Suche nach Magento 2 gefunden. Deshalb sage ich deutlich MAGENTO 2 Centos 7 Server, um es klar zu machen.
Willy Alejo

1
Die Frage selbst ist eindeutig mit "magento-1.8" gekennzeichnet, und die in der Frage angezeigte Dateistruktur ist eindeutig Magento 1. Sie können diese Frage auch für Magento2 erneut stellen und sie selbst mit der Antwort beantworten, die Sie hier gepostet haben.
7ochem

1

set app/etc/config.xmlund app/etc/local.xmlDateien auf 644

.htaccessStellen Sie sicher, dass alle Dateien an den Standardspeicherorten von Magento vorhanden sind, z. B. unter root, appOrdner usw.


1

Über diesen Link können Sie die Berechtigungen für Ihre Magento-Installation überprüfen

http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/magento_filesystem_permissions

Sie können das Magento-Bereinigungstool herunterladen und auf Ihrem Server ausführen.

Überprüfen Sie zuletzt auch die Gruppe / den Eigentümer Ihrer Dateien auf dem Server, und der von Ihnen verwendete FTP-Benutzer verfügt über ausreichende Aktualisierungs- / Löschrechte.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.