はじめに
PHPで開発中に、突然「PHP Fatal error: Uncaught Google\Protobuf\Internal\GPBDecodeException: Error occurred during parsing: Fail to push limit.」というエラーが表示されたことはありませんか?
特に、FileZillaなどのFTPクライアントを使ってファイルをサーバーにアップロードした直後にこのエラーが出ることがあります。
この記事では、FIleZillaでアップロードしたファイルがある場合のエラーの対処法を説明します。
対処法:FileZillaをバイナリファイルでアップロードする
対処方法は簡単で、FileZillaで「バイナリファイル」に設定してアップロードするだけです。
FileZillaを使っていない人は、あなたの使っているFTPクライアントでアップロードするときに「バイナリファイル」にしてアップロードしているか確認してください。
この記事ではFileZillaを使っている場合の変更方法について説明します。
FileZillaの設定方法
FileZillaの上部のタブから「転送」→「転送形式」→「バイナリ」と選択するだけです。
設定されている場合は「バイナリ」の左側に「・」がつきます。
この状態なら、バイナリファイルとしてアップロードされるようになります。

エラーが出ていた原因
エラー文の中に「Fail to push limit.」という文字列がありました。
これは、自動生成されたprotobufメタデータファイルを変更した場合に出るエラー文です。
そんな設定を変更した覚えがない人が多いと思います。
FileZilleなどのFTPクライアントを使ってファイルをアップロードしたときに、一部のバージョンでは勝手に行末が変更されることがあります。
そのため、勝手に変更されないように最初から「バイナリファイル」をアップロードすることで上手くいきます。
このエラーを解決するために参考にしたリンクを、記事最後に載せておきます。
もっと詳しく知りたい人や、この方法では解決しなかった人は参考にしてください。
おわりに
「Fail to push limit」に関するエラーの対処法についてまとめました。
FTPクライアントによる転送データの問題だ、とはエラー文から想像しにくいですよね。
参考になれば幸いです。