-1

WordPressプラグイン用の「軽量」PSR-0 AutoLoaderを試しています。ローカルの開発サーバーでは問題なく動作しますが、WPEngineのステージングサーバーの1つにプッシュすると、次のようになります。

解析エラー: /nas/wp/www/staging/ahsodesigns/wp-content/plugins/AhSoFunctionality/start.php の 30 行目に構文エラー、予期しない '['、')' が必要です

これがオートローダーです。

// lightweight psr-0 autoloader
spl_autoload_register(function ($classname) {
    // make sure we're only loading classes from our directory,
    if (preg_match('/AhSo/',$classname)) {
        $classname = ltrim($classname, "\\");
        preg_match('/^(.+)?([^\\\\]+)$/U', $classname, $match);
        $classname = str_replace("\\", "/", $match[1])
            . str_replace(["\\", "_"], "/", $match[2])
            . ".php";
        include_once $classname;
    }
});

問題はこの行にあり、

$classname = str_replace("\\", "/", $match[1])
            . str_replace(["\\", "_"], "/", $match[2])
            . ".php";

どうやら括弧が気に入らないようです...連結をすべて1行に移動するなど、いくつかの簡単なことを試しました。運が悪い、それはおそらく何らかのphp.iniのものだと思います。または、WPEngineのphp構成が気に入らない不正な行末文字を持っているかもしれません。このファイルは、Unix 行区切り記号「\n」を使用して phpStorm で作成されました。私はそれをいじる時間がもっとあればいいのにと思いますが、あなたはそれがどうなるか知っています. スタックに感謝します。一番。資源。これまで。

4

1 に答える 1

3

PHP 5.4 の配列表記を使用しています。それより前のバージョンの PHP ではサポートされていません。に変更します

$classname = str_replace("\\", "/", $match[1])
        . str_replace(array("\\", "_"), "/", $match[2])
        . ".php";
于 2012-09-18T15:34:13.703 に答える