Nemůžeš tu podmínku hodit do cyklu.
Nízkoúrovňové čtení nebo zápis z/do streamnů (soubory, sokety apod.) vždy může zpracovat menší množství dat, než bylo požadováno, proto se musí opakovat v cyklu. To snad vědí programátoři už ve školce.
Musíš testovat, zda návratová hodnota je větší jak 0 - jak píše @kvr kvr, pak teprve můžeš zkusit zapsat znova.
U toho nízkoúrovňového zápisu představuje chybu jen záporná hodnota. Je možné, že PHP to má zařízené tak, aby se vždy zapsal alespoň jeden bajt, a nula také znamená chybu, ale pak je vážná chyba v dokumentaci, že to tam není napsané.
@andreaw.fean zvolil opačnou strategii, a při neúspěchu prostě končí - což je v pořádku.
V pořádku ovšem není, že končí chybou i v případě úspěšného (částečného) zápisu.
Ty posixový funkce nefungují.
Jasně, vy jste expert na všechno a chyba je v Linuxu nebo jakou implementaci POSIXu myslíte. To sedí od někoho, kdo ani neví, jak zkopírovat data z jednoho souboru do druhého.
Sečteno a podtrženo problém je v tom, že tvá rada byla úplně špatná.
Že vám programování moc nejde jsem pochopil už v sousední diskusi. Že nezvládnete ani takovéhle základy a nechápete, v čem je problém, to mne překvapilo. Vaše hodnocení mých rad je mi tím pádem úplně jedno.