Ich habe ein seltsames PHP-Problem. Ich habe eine benutzerdefinierte Front-End-Post-Formular für WordPress. Es funktioniert die meiste Zeit, aber die anderen Male scheint es zufällig nicht zu funktionieren.copy(): Dateiname kann nicht leer sein Fehler (nur gelegentlich)
Mein PHP-Fehlerprotokoll spuckt folgende:
PHP Warning: copy(): Filename cannot be empty in /home/y567889/public_html/wp-content/themes/colormag/inc/front_deck.php on line 1071
PHP Warning: file_get_contents(https://ygoprodeck.com/pics/Trinity World Chalice-deck-14461.png): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
in /home/y567889/public_html/wp-content/themes/colormag/inc/front_deck.php on line 1025
PHP Warning: unlink(/home/y567889/public_html/pics/Trinity World Chalice-deck-14461.png): No such file or directory in /home/y567889/public_html/wp-content/themes/colormag/inc/front_deck.php on line 172
Also in der Theorie ein Benutzer 10 Beiträge einreichen könnte. Manchmal würden 2 dieser Posts mit Fehlern (fehlendes Featured-Bild usw.) mit dem obigen Fehler im PHP-Protokoll erzeugt werden.
Was habe ich versucht:
Changed copy()
-move_uploaded_file()
ohne Freude.
Geänderte Berechtigungen für die „Bilder“ -Ordner auf 775.
Es zu einem meiner Benutzer insbesondere auftritt. Es passiert ihm mit jedem Beitrag, den er hochladen möchte. Das Generieren eines neuen WP-Kontos behebt dies für ihn (obwohl es wie gewöhnlich immer noch gelegentlich fehlschlägt).
Da der Fehler in Zeile 1017 beginnt werde ich zeigen, was der Code für das heißt:
function moveYdktoDeck($ydkId,$postid){
$ydkUrl = wp_get_attachment_url($ydkId);
$newfile = $_SERVER['DOCUMENT_ROOT'].'/UploadedDecks/3/'.$postid.'.ydk';
copy($ydkUrl, $newfile)
}
Danke. Ich werde es versuchen. Aber erklärt das, warum es nur manchmal funktionieren würde? Das ist der Teil, den ich nicht verstehen kann. Theoretisch sollte es immer funktionieren, wenn es einmal funktioniert. – GenesisBits
Wenn es funktioniert, hängt es vom Ergebnis von wp_get_attachment_url ab. Meistens gibt wp_get_attachment_url URL zurück, aber es kann manchmal fehlschlagen und in diesem Fall gibt es false zurück. Die Fälle sind: 1) kann Posten nicht finden (Funktion get_post schlägt fehl) 2) post_type des Beitrags ist nicht "Anhang" 3) zurückgegebene URL wäre eine leere Zeichenkette, falsch, null, ... was auch immer Funktion leer wird als wahr aufgelöst – Keeehi