[Twig]コンストラクタで、"Twig_Filter::__construct() must be an instance of string"エラー

カテゴリ: PHP | タグ:

PHPのviewテンプレートであるTwigを使おうとしたとき、以下のエラーが出ることがあります。

Argument 1 passed to Twig_Filter::__construct() must be an instance of string, string given, 
called in /path/to/vendor/twig/twig/lib/Twig/Extension/Core.php on line 139 
and defined in /path/to/vendor/twig/twig/lib/Twig/Filter.php on line 35

これは、使用しているtwigのバージョンがPHPのバージョン7.0以降を要求しているにもかからわらず、実行環境のPHPが7.xではないためです。

バージョンの確認方法

composer経由でtwigをインストールしている場合は、ファイルvendor/twig/twig/composer.jsonをエディタで開きます。
requireの定義を見るとtwigパッケージが要求するPHPのバージョンを確認できます。

    "require": {
        "php": "^7.0",
        "symfony/polyfill-mbstring": "~1.0"
    },

また、PHPのバージョンの方は、コマンドラインからphp -versionコマンドを実行すれば確認できます。

$ php -version
PHP 5.5.35 (cli) (built: Jun  7 2017 17:38:06) 

レンタルサーバなどでSSHログインできない場合もあるかと思います。
このような場合は、以下の2行だけを含むファイルをversion.phpなど適当なファイル名でサーバにアップし、アップしたファイルをブラウザからアクセスすることでもPHPのバージョンを確認できます。

<?php
echo phpversion();

解決方法

twigのバージョン1.xはPHP5.3.3以降で実行可能なため、以下のようにcomposerでtwigのバージョンを指定してインストールすればよいです。

composer require twig/twig:~1.0

また、開発環境はPHP7.xで、実行環境がPHP5.xなどcomposer updateする環境と、実行環境のバージョンが異なる時もあります。
この場合は、プロジェクトのcomposer.jsonへ以下のようにプログラムが実行する環境のPHPバージョンを明示的に指定することも可能です。

{
    ...
    "config": {
        "platform": {
            "php": "5.6.21"
        }
    },
}

Amazonでおトクに買い物する方法
AmazonチャージでポイントGET


Amazonは買いもの前にAmazonギフト券をチャージしてポイントをゲットしないと損!

こちらもおススメ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です