2017-08-01 11 views
5

自分のPCからSymfony 2.8をダウンロードしてインストールしました。私は自分のプロジェクトをコピーし、会社のPCに貼り付けた。私はデータベースをまだ作成していない。私はc:\xampp\htdocs\ninjaz\php app/console server:runをしようとしましたが、その後、私はこのエラーメッセージが表示されます。Symfony 2.8構文解析エラー:構文エラー、予期しない ':'、予期している ';'または '{' in c:¥xampp¥htdocs¥myproject¥path¥to¥AnnotationRegistry.php 50行目

Parse error: syntax error, unexpected ':', expecting ';' or '{' in C:\xampp\htdo cs\Ninjaz\vendor\doctrine\annotations\lib\Doctrine\Common\Annotations\Annotation Registry.php on line 50

編集:私自身のPCは、PHP 7.1でXAMPPを持っています。当社のPCは、XAMPP PHP 5.5.19

これはAnnotationRegistry.phpの内容であります。私はそれらの: void: boolを除去することにより、実行しているサーバーを取得するために管理している

<?php 

namespace Doctrine\Common\Annotations; 

final class AnnotationRegistry 
{ 
/** 
* A map of namespaces to use for autoloading purposes based on a PSR-0 convention. 
* 
* Contains the namespace as key and an array of directories as value. If the value is NULL 
* the include path is used for checking for the corresponding file. 
* 
* This autoloading mechanism does not utilize the PHP autoloading but implements autoloading on its own. 
* 
* @var string[][]|string[]|null[] 
*/ 
static private $autoloadNamespaces = []; 

/** 
* A map of autoloader callables. 
* 
* @var callable[] 
*/ 
static private $loaders = []; 

/** 
* An array of classes which cannot be found 
* 
* @var null[] indexed by class name 
*/ 
static private $failedToAutoload = []; 

public static function reset() : void 
{ 
    self::$autoloadNamespaces = []; 
    self::$loaders   = []; 
    self::$failedToAutoload = []; 
} 

/** 
* Registers file. 
* 
* @deprecated this method is deprecated and will be removed in doctrine/annotations 2.0 
*    autoloading should be deferred to the globally registered autoloader by then. For now, 
*    use @example AnnotationRegistry::registerLoader('class_exists') 
*/ 
public static function registerFile(string $file) : void 
{ 
    require_once $file; 
} 

/** 
* Adds a namespace with one or many directories to look for files or null for the include path. 
* 
* Loading of this namespaces will be done with a PSR-0 namespace loading algorithm. 
* 
* @param string   $namespace 
* @param string|array|null $dirs 
* 
* @deprecated this method is deprecated and will be removed in doctrine/annotations 2.0 
*    autoloading should be deferred to the globally registered autoloader by then. For now, 
*    use @example AnnotationRegistry::registerLoader('class_exists') 
*/ 
public static function registerAutoloadNamespace(string $namespace, $dirs = null) : void 
{ 
    self::$autoloadNamespaces[$namespace] = $dirs; 
} 

/** 
* Registers multiple namespaces. 
* 
* Loading of this namespaces will be done with a PSR-0 namespace loading algorithm. 
* 
* @param string[][]|string[]|null[] $namespaces indexed by namespace name 
* 
* @deprecated this method is deprecated and will be removed in doctrine/annotations 2.0 
*    autoloading should be deferred to the globally registered autoloader by then. For now, 
*    use @example AnnotationRegistry::registerLoader('class_exists') 
*/ 
public static function registerAutoloadNamespaces(array $namespaces) : void 
{ 
    self::$autoloadNamespaces = \array_merge(self::$autoloadNamespaces, $namespaces); 
} 

/** 
* Registers an autoloading callable for annotations, much like spl_autoload_register(). 
* 
* NOTE: These class loaders HAVE to be silent when a class was not found! 
* IMPORTANT: Loaders have to return true if they loaded a class that could contain the searched annotation class. 
* 
* @deprecated this method is deprecated and will be removed in doctrine/annotations 2.0 
*    autoloading should be deferred to the globally registered autoloader by then. For now, 
*    use @example AnnotationRegistry::registerLoader('class_exists') 
*/ 
public static function registerLoader(callable $callable) : void 
{ 
    // Reset our static cache now that we have a new loader to work with 
    self::$failedToAutoload = []; 
    self::$loaders[]   = $callable; 
} 

/** 
* Autoloads an annotation class silently. 
*/ 
public static function loadAnnotationClass(string $class) : bool 
{ 
    if (\class_exists($class, false)) { 
     return true; 
    } 

    if (\array_key_exists($class, self::$failedToAutoload)) { 
     return false; 
    } 

    foreach (self::$autoloadNamespaces AS $namespace => $dirs) { 
     if (\strpos($class, $namespace) === 0) { 
      $file = \str_replace('\\', \DIRECTORY_SEPARATOR, $class) . '.php'; 

      if ($dirs === null) { 
       if ($path = stream_resolve_include_path($file)) { 
        require $path; 
        return true; 
       } 
      } else { 
       foreach((array) $dirs AS $dir) { 
        if (is_file($dir . \DIRECTORY_SEPARATOR . $file)) { 
         require $dir . \DIRECTORY_SEPARATOR . $file; 
         return true; 
        } 
       } 
      } 
     } 
    } 

    foreach (self::$loaders AS $loader) { 
     if ($loader($class) === true) { 
      return true; 
     } 
    } 

    self::$failedToAutoload[$class] = null; 

    return false; 
    } 
} 

をしかし、私は私のプロジェクトを参照するとき、最初のものと同じですが、もう一度削除しようとすると、別のエラーが他のライブラリに作成されます。エラーシナリオ後の無限のエラーのようなものです。 私は今何をすべきかわかりません。私はSymfonyを初めて使っています。 ヘルプが必要です。

答えて

5

これは間違ったバージョンのPHPが原因です。私も同じ問題がありました。 PHP 7+が必要です。 7より小さいバージョンのPHPは "戻り値型宣言"をサポートしていません。

また、あなたのcomposer.jsonに次のコードを追加しようとすることができます。

{ 
    "config": { 
     "platform": {"php": "5.6"} 
    } 
} 
+0

うん。私はそれが理由だと思う。私は自分のプロジェクトを私のPCからPHP 7を持っている私たちの会社にコピーしたが、私たちはPHP 5.6しか持っていない。 – WashichawbachaW

関連する問題