Lokale Avatare können nicht angezeigt werden

Siehe Updates unten. Ich habe ein Upgrade auf 3.7.1 mit svn durchgeführt. Ich habe das zuerst auf meinem Localhost gemacht, um sicherzugehen, dass alles in Ordnung ist. Alles war, also machte ich es auf dem Server. Auf dem Server erscheinen die Avatare der Benutzer jedoch nicht und stattdessen bekommt jeder Gravatar‘s Mystery Man.

Hier ist der Code, den ich in meiner functions.php habe:

comment_type ) : case '' : ?> <p  id="li-comment-"> <div id="comment-">  

Wenn ich mir die Quelle der generierten Seite auf meinem localhost für das obige ansehe, bekomme ich folgenden Code:

 <img src="http://localhost/[path]/wp-content/uploads/avatars/[a number]/[imagename.jpg]" 

Auf dem Server erhalte ich beim Anzeigen der Quelle folgenden Code für denselben Benutzer:

 <img src="http://img.daswordpress.com/comments/none.jpg" 

Ich muss irgendwo einen Fehler machen, aber für das Leben von mir kann ich es nicht herausfinden. Die einzige Erklärung, die ich finden kann, ist, dass Gravatar keine Anfragen von localhost akzeptiert und deshalb funktioniert es so, wie ich es auf meinem localhost haben möchte.

Was muss ich also tun, damit ihre lokalen Avatare auftauchen (die, die sie selbst hochgeladen haben)? Ich sollte auch hinzufügen, dass ich das BuddyPress-Plugin benutze (sowohl auf localhost als auch auf Server).

Gibt es darüber hinaus eine Technik, mit der die Leute die Dateien auf dem Server mit denen auf dem Entwicklungscomputer vergleichen? Etwas Ähnliches wie Vimdiff?

UPDATE: Ich habe das Verzeichnis localhost rekursiv mit cp -r in ein anderes Verzeichnis kopiert. Ich rsynced dann dieses Verzeichnis mit dem Fernbedienungsserver, der es eine Spiegelung des Servers bildet. Dann habe ich diff -NbBiwr /path/to/localhost /path/to/localhostCopyThatWasRsynced und keine wesentlichen Unterschiede erhalten, außer für die .svn in den .svn Verzeichnissen. Wenn ich die kopierte Version in einem Browser anschaue, erscheinen die lokalen Avatare. Das macht wirklich keinen Sinn mehr. Ich habe auch die SQL-database aktualisiert, um die auf dem Remote-Server widerzuspiegeln und die lokalen Avatare erscheinen auf dem lokalen Host, aber nicht auf dem entfernten Server.

UPDATE 2: Hier sind alle Dinge, die ich seit dem letzten Update versucht habe:

  1. Schalte wp-debug auf true um. Keine bemerkenswerten Fehler.
  2. Entfernte das gesamte Verzeichnis, machte eine neue svn co
  3. Deaktiviert alle anderen Plugins außer BuddyPress.
  4. Verwendet das Standard-BuddyPress-Design.
  5. Installierte Version 3.6.1 (die letzte gute Version, die ich benutzt habe).
  6. Checked und checked Verzeichnisberechtigungen.
  7. Ich habe das Avatare-Verzeichnis entfernt und wenn jemand versucht, einen Avatar hochzuladen, erstellt es das Avatars-Verzeichnis und das Userid-Unterverzeichnis, aber das Bild wird nicht hochgeladen. Das Unterverzeichnis bleibt leer. Dies ist der Fehler, der am Frontend zurückgegeben wird Upload Failed! Error was: Unable to create directory wp-content/uploads/avatars/1407/avatars/1407. Is its parent directory writable by the server? Upload Failed! Error was: Unable to create directory wp-content/uploads/avatars/1407/avatars/1407. Is its parent directory writable by the server? Wie Sie sehen können, dupliziert es das Avatars-Verzeichnis und das Userid-Unterverzeichnis aus irgendeinem Grund. Dies geschieht sowohl auf dem Server als auch auf dem lokalen Host. Localhost zeigt Avatare jedoch richtig an.
  8. Gebastelt mit Birgires Vorschlägen unten. Nichts.

Solutions Collecting From Web of "Lokale Avatare können nicht angezeigt werden"

Debug-Ideen:

Sie könnten versuchen zu sehen, ob dies irgendeinen Effekt hat:

 add_filter( 'bp_core_fetch_avatar_no_grav', '__return_true' ); 

Aber Sie sollten die Parameter überprüfen, die den bp_core_fetch_avatar Filter bp_core_fetch_avatar um zu sehen, ob sie korrekt sind (ungetestet):

 add_filter( 'bp_core_fetch_avatar', 'my_bp_core_fetch_avatar', 99, 9 ); function my_bp_core_fetch_avatar( $html, $params, $item_id, $avatar_dir, $css_id, $html_width, $html_height, $avatar_folder_url, $avatar_folder_dir ) { // debug: $args = array( 'html' => $html, 'params' => join( ', ', $params ), 'item_id' => $item_id, 'avatar_dir' => $avatar_dir, 'css_id' => $css_id, 'html_width' => $html_width, 'html_height' => $html_height, 'avatar_folder_url' => $avatar_folder_url, 'avatar_folder_dir' => $avatar_folder_dir, ); $debug = date_i18n( 'c' ); foreach( $args as $key => $value ) { $debug .= sprintf( ' | %s: %s ', $key, $value ); } error_log( $debug . PHP_EOL , 3, '/path/to/my/debug.log' ); return $html; } 

wo Sie den Pfad zu Ihrer debug.log Datei ändern debug.log .

Die Datei sollte dann Zeilen wie diese enthalten:

 2013-11-12T12:01:16+00:00 | html: ??? | params: ??? | item_id: ??? | avatar_dir: ??? | css_id: ??? | html_width: ??? | html_height: ??? | avatar_folder_url: ??? | avatar_folder_dir: ??? 

Ich habe den obigen Debug-Code aktualisiert, um zu berücksichtigen, dass $params ein Array ist.

Einige allgemeine Bemerkungen:

Es ist interessant, in die Datei /bp-core/bp-core-avatars.php zu schauen.

Das Avatarbild scheint mit diesem Filter überschrieben zu werden:

 add_filter( 'get_avatar', 'bp_core_fetch_avatar_filter', 10, 5 ); 

und innerhalb der bp_core_fetch_avatar_filter() Callback haben Sie diese Zeile:

  // Let BuddyPress handle the fetching of the avatar $bp_avatar = bp_core_fetch_avatar( array( 'item_id' => $id, 'width' => $size, 'height' => $size, 'alt' => $alt ) ); 

und innerhalb dieser function fand ich den angewendeten Filter bp_core_fetch_avatar .

Also denke ich, dass diese functionen es wert sind, weiter zu debuggen, oder vielleicht könntest du versuchen, die Avatare über den obigen bp_core_fetch_avatar Filter zu korrigieren?

Es stellt sich heraus, dass etwas mit dem Upload-Ordner nicht stimmt. Wenn jemand dieses Problem in der Zukunft hat, ist das was zu tun ist.

  1. Deaktiviere BuddyPress.
  2. chmod 777 uploads/
  3. Installieren Sie BuddyPress neu
  4. chmod 775 uploads/

Das war alles was es war.