Ist file_exists () kompatibel mit timthumb.php?

Ich verwende das neueste Timthumb-Skript, um meine Post-Thumbnails zu generieren und sie zusammen mit dem Auszug einzufügen. Ich möchte nur, dass die Thumbnails geladen werden, wenn ihre Dateien tatsächlich existieren, sonst möchte ich nicht, dass der Bildplatzhalter geladen wird.

Ich werde dies in einem Multi-User-Netzwerk verwenden, das sich noch in den frühen Entwicklungsstadien befindet. Und ich möchte testen, ob der Beitragsautor es versäumt hat, das benutzerdefinierte Feld “thumb” korrekt hinzuzufügen, und wenn dies der Fall ist, würde normalerweise ein Fehler 404 not found zurückgegeben.

Also habe ich den folgenden Code in meine Schleife gesetzt, der zuerst bestimmt, ob der Beitrag irgendwelche Bilder hat, dann wird der Dateipfad für das erste Bild verwendet, das in dem Beitrag aufgelistet ist, ob die Datei existiert.

post_content; $searchimages = '~]* />~'; preg_match_all($searchimages, $content, $pics); $iNumberOfPics = count($pics[0]); if($iNumberOfPics > 0){ $blogTemplate = get_bloginfo('template_directory'); $imgSrc = get_post_meta($post->ID, "thumb", $single = true); $imgSrc = $blogTemplate . "/scripts/timthumb.php?src=" . $imgSrc . "&w=300&zc=1"; if(file_exists($imgSrc)){ ?> <a href="https://wordpress.stackexchange.com/questions/33197/is-file-exists-compatible-with-timthumb-php/" class="thumb" rel="bookmark" title="Permanent Link to "><img src="https://wordpress.stackexchange.com/questions/33197/is-file-exists-compatible-with-timthumb-php/" alt="" /> 

Ich habe die Ausgabe von $ imgSrc getestet, die gültig ist, es ist eine existierende Datei, obwohl die function my file_exists ($ imgSrc) immer false zurückgibt. Ich frage mich, ob das Timthumb-Skript mit der function file_exists () kompatibel ist?

Solutions Collecting From Web of "Ist file_exists () kompatibel mit timthumb.php?"

Die function file_exists () ist eine eingebaute PHP-function und sollte überall funktionieren. Aber mit der Art, wie du es machst, ist es falsch. Sie können keine Abfragezeichenfolge in einer PHP-Datei verwenden, um zu prüfen, ob die Datei existiert. Nur weil es ein gültiger Link ist, heißt das nicht file_exists (). Auf Ihrem Server befindet sich keine Datei mit dem Namen /scripts/timthumb.php?src= *

Sie müssen Folgendes für Ihren Code tun:

 < ?php $content = $post->post_content; $searchimages = '~]* />~'; preg_match_all($searchimages, $content, $pics); $iNumberOfPics = count($pics[0]); if($iNumberOfPics > 0){ $blogTemplate = get_bloginfo('template_directory'); $imgSrc = get_post_meta($post->ID, "thumb", $single = true); if(file_exists($imgSrc)){ $imgSrc = $blogTemplate . "/scripts/timthumb.php?src=" . $imgSrc . "&w=300&zc=1"; ?> < ?php the_title(); ?>< ?php } } ?> 

Auf diese Weise suchen Sie tatsächlich nach dem tatsächlichen Dateinamen und ändern später die URL in die Abfragezeichenfolgen-URL, nachdem Sie wissen, dass die Datei existiert.

Datei existiert(); und is_readable (); (was ich entschieden habe, um stattdessen zu gehen, da es erkennt, ob die Datei lesbar ist, sowie wenn es existiert) beide erfordern die $ _SERVER [‘DOCUMENT_ROOT’]; Variable, die aufgerufen werden muss, da die Datei physisch auf der Festplatte des Dateiservers gespeichert ist und daher die Angabe des Domänennamens in der function ersetzt werden muss. Mach es so:

 is_readable($_SERVER['DOCUMENT_ROOT'].'/'.preg_replace('/(https?:\/\/)?(www\.)?+(example\.com)\/?/','',$imgSrc); 

keine Notwendigkeit, einen speziellen Apache-Code zu schreiben.