古いPHPスクリプトの保守をしており、以下のようにファイルをtruncateしてから上書きするスクリプトですが、以前は正常に動作していたものがvagrant-vbguestをインストールして再起動してからftruncateが失敗するようになりました。

$file = "./test.txt";
$str = "書き込み内容";
$fp = fopen($file, 'a');
flock($fp, LOCK_EX);
ftruncate($fp, 0); //ftruncateの戻り値を調べるとfalseとなる
rewind($fp);
fputs($fp, $str);
flock($fp, LOCK_UN);
fclose($fp);

ftruncateが失敗するため上書きされず、既存の内容に追記されてしまいます。

【環境】
Vagrant 2.2.5
GuestOS Centos6.9
HostOS Windows10
PHPバージョン 5.3.3

GuestOSのシャットダウンに失敗したことがあり、その後vagrant upすると

Vagrant was unable to mount VirtualBox shared folders.

のようなエラーが表示されたため、

vagrant plugin install vagrant-vbguest

を実行してプラグインをインストール後、仮想マシンを立ち上げ直してから動作内容が変わったように思われます。

ftruncate以外の動作は今のところ問題ないようですが、なぜftruncateが失敗するのかがわからず悩んでいる次第です。

fopenのモードをcやw、rにするとftruncateは正常動作(trueを返す)します。

fopenのモードがaの場合にftruncateが失敗する理由および仮想マシンの修復について、ご存知であれば助言いただけますでしょうか。