Php工匠迁移 - 意外的“字符串”(T_STRING)

时间:2017-05-05 18:42:55

标签: laravel laravel-5 composer-php laravel-5.4 artisan

当我运行php artisan migrate为Laravel中的数据库创建表时,我收到以下错误:

 [Symfony\Component\Debug\Exception\FatalThrowableError]
 Parse error: syntax error, unexpected 'string' (T_STRING), expecting variable (T_VARIABLE)

我认为这个错误是没用的,因为它没有告诉我什么文件,以及什么地方出错了(这使得很难理解发生了什么)。

迁移似乎因第一次迁移而失败,因为它没有在我的数据库中生成单个表。

这是迁移(用户 - >使用php artisan make:auth生成):

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsersTable extends Migration
{
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('password');
            $table->string('avatar');
            $table->rememberToken();
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('users');
    }
}

这只是一个新行的默认迁移。我不知道它有什么问题。我已经尝试了composer dump-autoloadcomposer clearcache,但没有任何作用。

我希望有人知道解决方案。

编辑:它似乎发生在第一次迁移之前。是否存在可能出错的文件?

您可以在此处阅读我的Laravel.log文件:https://pastebin.com/1PrDwady

3 个答案:

答案 0 :(得分:2)

从您的stack trace看起来好像您可能在此时意外编辑了string()的功能定义: C:\xampp\htdocs\urenlijstje\vendor\laravel\framework\src\Illuminate\Database\Schema\Blueprint.php:473

其中一个变量名可能缺少$,指示PHP解析器确实是变量。

以下是Laravel 5.4中的line of code

在这样的情况下,框架无法启动,我经常追溯到像这样无意编辑的问题。由于您的vendor目录不在源代码管理中(或者至少不应该!),另一个选项是rm -rf vendor && composer install并查看是否可以解决您的问题。

答案 1 :(得分:1)

我在这里看到的唯一错误是avatar。显然没有avatar类型,所以应该可能是:

$table->string('avatar');

如果您仍然看到错误,请验证确切的行,并确保您运行的是有效版本的PHP(它应该是5.6 +)。

如果它没有帮助,请尝试保留空up方法以验证错误是否仍然存在。它可能位于不同的应用程序位置(例如ServiceProvider),而不是直接在此迁移中。

答案 2 :(得分:0)

这是$ table-&gt; avatar(&#39;密码&#39;);应该是$ table-&gt; string(&#39; avatar&#39;);