V týdnu jsem dostal hlášení od Koldy, že jednomu z našich klientů nejdou odesílat přílohy. Pozastavil jsem se nad podivností této chyby a odkazoval jsem ho na nastavení jeho e-mailového klienta – myslel jsem totiž, že se k serveru připojuje pomocí POP3 a SMTP serveru, jako drtivá většina našich klientů. Jednalo se však o chybu na našem webovém rozhraní SquirrelMailu, které bylo klientům poskytnuto jako alternativa a po několik měsíců nebylo nikým využíváno.
Google, ani letmý pohled do dostupné dokumentace mi nenapověděl.
Při pokusu o uložení se vracela chyba Nelze přesunout/zkopírovat soubor. Soubor není přiložen
(v originále Could not move/copy file. File not attached
).
Prošel jsem celou konfiguraci, zkontroloval všechna nastavení, ale vše se zdálo být v pořádku. Teprve až podrobným zkoumáním kódu, který zpracovává soubory tvořící přílohy mailu jsem vyvolal podrobné chybové hlášení PHP:
Warning: move_uploaded_file(../attach/DynUVxB1G8peSN2zHNJWLs7s2lXvJN5K) [function.move-uploaded-file]: failed to open stream: No such file or directory in /web/webxyz.cz/mail/src/compose.php on line 1389
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/web/_temp/upload/phpAA80.tmp' to '../attach/DynUVxB1G8peSN2zHNJWLs7s2lXvJN5K' in /web/webxyz.cz/mail/src/compose.php on line 1389
A byl problém na světě. Ve standardní distribuci nejsou připraveny některé adresáře nezbytné pro plnou funkčnost projektu a je třeba je ručně vytvořit. Konkrétně adresář /attach
v rootu projektu.