Nur um Sie über meine Situation zu informieren.
Ausführen der Multi-Site-Version von WordPress: 3.5.2 Neuinstallation.
Keine Plugins von Drittanbietern. Alle meine Plugins wurden zum Debuggen deaktiviert.
Verwenden von WordPress MU Domain Mapping für mehrere verschiedene TLDs im Netzwerk.
Ich habe auch alle Netzwerk-URLs gefälscht, um Dateien von meinem lokalen Server anstatt vom vorhandenen Live-Netzwerk bereitzustellen.
Hosts-Datei: vi /etc/hosts/
Könnte etwas enthalten wie:
127.0.0.1 domain-a.com
127.0.0.1 www.domain-a.com
127.0.0.1 domain-b.com
127.0.0.1 www.domain-b.com
für jeden Standort im Netzwerk .... etc.
Ich habe das getan, damit ich die URLs der Website nicht ändern muss und was Sie haben.
Alles an jedem Netzwerkstandort funktioniert wie vorgesehen. Das einzige Problem ist das Hochladen von Medienanhängen. Aus irgendeinem Grund werden sie nicht ordnungsgemäß hochgeladen. Der Benutzer ist eine vollwertige Administrator-Benutzerrolle, daher kann es sich nicht um einen berechtigungsbezogenen Benutzer handeln.
Ich starte gerade Ubuntu 12.04 mit PHP 5.4.6 (FAST-CGI).
Beim Hochladen eines Bildes erhalte ich einen sehr allgemeinen Fehler von WordPress.
Error 40 Year Old … to Life.jpg HTTP error.
Nachdem ich PHP von FAST-CGI
auf MOD-PHP
umgestellt hatte, erhielt ich eine etwas genauere Antwort von WordPress.
Error 40 Year Old … to Life.jpg The uploaded file could not be moved to wp-content/uploads/sites/3/2013/07.
Ich habe das Verzeichnis ausgecheckt: ./wp-content/uploads/sites/3/2013/
und es wird kein /07/
automatisch erstellt. Daher habe ich versucht, es manuell zu erstellen und erneut aus FAST-CGI
und MOD-PHP
hochzuladen. Es folgen immer noch die gleichen Fehler.
Ich habe mir Folgendes angesehen: ./wp-admin/network/site-settings.php?id=3
im Netzwerkadministrator-Dashboard, auf der Suche nach medienbezogenen Optionen.
Uploads Use Yearmonth Folders => true
Upload Path => '' //blank
Upload Url Path => '' //blank
Ich habe das Live-Netzwerk mit mehreren Standorten zusammen mit anderen Installationen mit mehreren Standorten überprüft und sie scheinen dieselben Einstellungen zu haben.
Dann fing ich an zu glauben, es könnte mit dem Zugriff zusammenhängen.
Wenn ich zu Network Admin -> Settings -> Network Setup
gehe
Es sagt mir zu verwenden:
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
Welches ist, was ich verwendet habe, abgesehen von der geringfügigen Änderung am Anfang (unmittelbar nach RewriteEngine On
), die es Nicht-WWW-URLs ermöglicht, zu WWW-URLs umzuleiten.
Beispiel:
# DOMAIN-A Redirect non-www urls to www
RewriteCond %{HTTP_Host} ^domain-a.com
RewriteRule ^(.*)$ http://www.domain-a.com/$1 [R=301,L]
# DOMAIN-B Redirect non-www urls to www
RewriteCond %{HTTP_Host} ^domain-b.com
RewriteRule ^(.*)$ http://www.domain-b.com/$1 [R=301,L]
Diese Regeln stimmen jedoch nicht mit denen des WordPress-Codex überein . Ich habe die Empfehlungen gemäß dem WordPress-Codex ausprobiert, jedoch ohne Erfolg beim Hochladen von Bildern in meinem WordPress Multi-Site-Netzwerk.
Ich habe derzeit SUBDOMAIN_INSTALL
auf true gesetzt, wobei die entsprechenden Umschreiberegeln gemäß dem WordPress-Codex verwendet werden. Ich habe auch versucht, SUBDOMAIN_INSTALL
mit den entsprechenden Umschreiberegeln wieder auf false zu setzen. Weder haben das Problem behoben.
Die Installation des Live-Netzwerks (Version: 3.5.2) hat ebenfalls aufgehört, das Hochladen von Bildern zuzulassen.
Ich habe nicht genug Erfahrung mit Multi-Site, um zu wissen, was dieses Problem verursachen könnte. Ich werde dies weiter untersuchen, es sei denn, jemand anderes hat eine Idee, wie dieses Problem behoben werden kann. Bitte teilen Sie Ihr erworbenes Wissen mit!
Bitte beachten Sie, dass es sich zu 100% nicht um ein Speicherproblem handelt. Es wird nicht einmal eine 1kb-Bilddatei hochgeladen.
Ich habe alle möglichen Lösungen ausprobiert, wie in Wie behebe ich einen HTTP-Fehler beim Hochladen von Bildern? und immer noch kein Glück, dass das funktioniert.
Die Verwendung von Dashboard -> Media -> Add New -> browser uploader
anstelle des Uploaders für mehrere Dateien führt zu einem internen Serverfehler.
Aus welchem Grund auch immer, ich bin in der Lage, dieses eine zufällige bestimmte Bild immer und immer wieder ohne Probleme hochzuladen, aber jedes andere Bild, das ich hochlade, schlägt fehl ... sogar Bilder mit einer Größe von 1 KB.
Ich kann einige Bilder hochladen und andere nicht. Einige Bilduploads werfen interne Serverfehler auf, andere nicht. Einige könnten 1kb sein und einige könnten 5mb sein. Absolut rätselhaft.
Vielen Dank an @s1lv3r
und @GhostToast
für ihre nützlichen Ratschläge in chat Ich habe das Problem gefunden.
Wie in meiner oben gestellten Originalfrage angegeben, habe ich festgestellt, dass ich sowohl FAST-CGI
als auch MOD-PHP
getestet habe und weiterhin denselben Fehler reproduziert habe.
Als im Chat angegeben habe ich sowohl auf Ubuntu 12.04 als auch auf CentOS 5.9 dedizierten Servern getestet.
Das Chatnachricht von @s1lv3r
ist letztendlich derjenige, der die Idee ausgelöst hat, auch PHP-FPM
zu testen ... und würdest du dir das ansehen? PHP-FPM
hat das Rätsel gelöst!
Ich habe sowohl unter Ubuntu 12.04 als auch unter CentOS 5.9 mehrere Male getestet, ohne aktivierte Plugins, mit aktivierten Plugins, mit aktiviertem Standarddesign und mit aktiviertem benutzerdefinierten Design. Es hat definitiv jedes Bild hochgeladen, egal ob klein oder groß - ohne Fehler.
Also noch einmal für den Fall, dass Sie es nicht früher gefangen haben. Wenn Sie ähnliche Symptome mit Ihrem WordPress Multi-Site auftreten. Versuchen Sie, PHP-FPM
auf Ihrem Server oder als im Chat angegeben von @s1lv3r
zu aktivieren. Sie können versuchen, Ihr Upload-Verzeichnis auf 777 zu ändern, wenn Sie FAST-CGI
verwenden.
Durch die Aktivierung von PHP-FPM
wurde dieses spezielle Problem mit WordPress Multi-Site behoben, das beim Hochladen von Bildern einen HTTP-Fehler verursachte.
BoF EDIT 20.10.2016
Wenn bei WordPress Multisite HTTP-Fehler auftreten, berücksichtigen Sie die Konfiguration Ihrer Installation.
Es gibt zwei Optionen für WordPress Multisite:
Ich verwalte ein Netzwerk von Sites, die alle TLDs in einem "Unterverzeichnis" verwenden. Sie arbeiteten für immer gut. Plötzlich scheiterten sie beim Hochladen von Dateien mit "HTTP-Fehler".
Das Problem trat nur in WordPress auf und es handelte sich um HTTP. Es gibt also etwas, worauf sich sowohl WordPress als auch Apache verlassen haben. Der einzige gemeinsame Link ist .htaccess
.
Wenn Sie sich die WordPress Codex :: .htaccess und Mod Rewrite ansehen, unterscheiden sich die Umschreiberegeln je nach Art der Installation, die Sie für Multisite konfiguriert haben.
Ich habe die Umschreiberegeln für eine "Unterverzeichnis" -Installation durch die entsprechenden Umschreiberegeln für eine "Unterdomänen" -Installation ersetzt. Ich habe dann auch wp-config.php
aktualisiert, um define('SUBDOMAIN_INSTALL', false);
in this define('SUBDOMAIN_INSTALL', true);
zu ändern.
BOOM! Problem gelöst. Kein HTTP-Fehler mehr beim Hochladen von Dateien in WordPress Multisite mit TLDs für jede Site im Netzwerk.
EoF EDIT 20.10.2016