【问题标题】:Php artisan migrate - unexpected 'string' (T_STRING)Php 工匠迁移 - 意外的“字符串”(T_STRING)
【发布时间】:2017-10-04 08:12:16
【问题描述】:

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

 [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

【问题讨论】:

  • 这是什么? $table->头像('密码');

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


【解决方案1】:

这是 $table->avatar('password');应该是 $table->string('avatar');

【讨论】:

  • 是的,这是一个小错误,但我忘了在这个问题中对其进行编辑。当我尝试迁移时,我仍然遇到同样的错误。
  • 该文件中似乎没有任何问题。我想知道路由文件中是否有问题?还是在此之前执行的另一个文件?
  • 我的路线似乎没有任何问题......非常奇怪。我会在另一台电脑上试试。也许这是我的PHP的问题。 (我将日志添加到问题中)。
【解决方案2】:

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

$table->string('avatar');

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

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

【讨论】:

  • 我知道,这是一个小错误,但我忘了在这个问题中对其进行编辑。当我尝试迁移时,我仍然遇到同样的错误。我的 PHP 版本是 7.0.9,当 up() 为空时它仍然出现。我会在另一台电脑上试试看我的 PHP 是否有问题。
【解决方案3】:

从您的stack trace 看来,此时您可能不小心编辑了string() 的函数定义: C:\xampp\htdocs\urenlijstje\vendor\laravel\framework\src\Illuminate\Database\Schema\Blueprint.php:473

其中一个变量名可能缺少$,向 PHP 解析器表明它确实是一个变量。

这是line of code,它应该在 Laravel 5.4 中。

在这种框架无法启动的情况下,我经常将问题追溯到这样的无意编辑。由于您的 vendor 目录不在源代码控制中(或者至少不应该!),另一个选择是 rm -rf vendor &amp;&amp; composer install 看看是否能解决您的问题。

【讨论】:

  • 我不知道如何,或者为什么,但整个“功能”这个词都不见了。它只是:公共字符串()。我用版本控制(git)找不到它。但现在已经修好了。谢谢!
猜你喜欢
  • 2018-12-02
  • 1970-01-01
  • 2015-11-06
  • 2023-03-10
  • 2017-06-20
  • 2016-06-16
  • 2020-01-22
  • 2020-04-01
  • 1970-01-01
相关资源
最近更新 更多