为啥我不能查看这个 laravel 项目?

Posted

技术标签:

【中文标题】为啥我不能查看这个 laravel 项目?【英文标题】:Why can't I view this laravel project?为什么我不能查看这个 laravel 项目? 【发布时间】:2020-07-09 09:52:18 【问题描述】:

诚然,我是 Laravel 和后端开发的新手,但我试图在我的浏览器中打开一个 Laravel 项目,却收到一条错误消息。我从一个与另一组开发人员合作的客户那里继承了这个项目,他们已经离开了,所以我独自一人试图找出问题所在。

第一个错误消息是:

**Warning:** require(C:\xampp\htdocs\vizzue\bootstrap/../vendor/autoload.php): failed to open stream: No such file or directory in **C:\xampp\htdocs\vizzue\bootstrap\autoload.php** on line **17**

**Fatal error:** require():Failed opening required 'C:\xampp\htdocs\vizzue\bootstrap/../vendor/autoload.php' (include_path='C:\xampp\php\PEAR') in **C:\xampp\htdocs\vizzue\bootstrap\autoload.php** on line **17**

为了尝试修复该错误(通过我在此处找到的解决方案),我在终端中运行 composer install 以尝试下载丢失的文件。这将之前的错误消息切换为Whoops, looks like something went wrong.(不是很有帮助)。

因此,我在此处找到了更多建议,以获得针对我的问题的更详细错误,并在四个单独的标题下输出了一长串错误。

标题 1

SQLSTATE[HY000] [1045] Access denied for user 'homestead'@'localhost' (using password: YES) (SQL: select * from `sessions` where `id` = hA02gV6ShpNslkw0N8Wrgm8QmyA0ZxoXfCNHsVTK limit 1)

标题 2

PDOException
SQLSTATE[HY000] [1045] Access denied for user 'homestead'@'localhost' (using password: YES)

标题 3

QueryException
SQLSTATE[HY000] [1045] Access denied for user 'homestead'@'localhost' (using password: YES) (SQL: select * from `sessions` where `id` = hA02gV6ShpNslkw0N8Wrgm8QmyA0ZxoXfCNHsVTK limit 1)

标题 4

PDOException
SQLSTATE[HY000] [1045] Access denied for user 'homestead'@'localhost' (using password: YES)

我的 PHP 版本是:PHP 7.2.28

我的 Laravel 版本是:Laravel Framework 5.4.36

另外,我通过复制.env-example 文件创建了一个.env

编辑:

我在database/migrations 目录中找到了数据库信息,因此我确实拥有数据库文件。但是,我仍然有错误。我跑了php artisan generate:key,这很好。但是当我运行php artisan migrate 时出现以下错误:

In Connection.php line 647:

  could not find driver (SQL: select * from information_schema.tables where ta   
  ble_schema = homestead and table_name = migrations)


In Connector.php line 68:

  could not find driver

【问题讨论】:

您的数据库凭据有误。检查你的 .env 文件! 我应该在问题中提到这一点,但我已经将 .env-example 复制到了 .env 文件中。数据库属性已经在我收到的项目中设置,但我没有在批量 laravel 文件中发送的数据库。这是造成问题的原因吗? 你能发布你的config/database.php 吗?我假设您已经 read the docs 配置您的数据库? 如果你在终端/控制台运行mysql --version,你用的是什么版本? 【参考方案1】:

您应该配置您的 .env 文件以启用对您的数据库的 laravel 访问。如果您没有,只需复制.env.example 文件并将其重命名为.env

然后更改以下属性:

DB_DATABASE=YOUR_DATABASE_NAME

DB_USERNAME=USER_NAME

DB_PASSWORD=密码

然后你应该运行php artisan key:generate 来生成一个新的加密密钥

编辑

对于您的新问题,您应该运行composer update,然后运行composer require doctrine/dbal

如果这样不行

您可能需要在 php.ini 文件中注释掉以下内容。

;extension=pdo_mysql.so

正如here所说的

【讨论】:

我应该在问题中提到这一点,但我已经将 .env-example 复制到了 .env 文件中。数据库属性已经在我收到的项目中设置,但我没有在批量 laravel 文件中发送的数据库。这是造成问题的原因吗?我已经运行了php artisan key:generate 命令,但仍然没有运气。 您已经运行php artisan migrate 为您的数据库创建所有表了吗? php artisan migrate 给了我一系列其他问题。但是我没有与项目的其余部分一起发送的数据库(我从另一组我无法沟通的开发人员那里继承了该项目)。 我明白,但是您应该使用正确的名称创建一个新的数据库,然后运行迁移,然后再试一次,看看您是否可以通过第一个问题。发生此错误是因为您设置的属性有问题。确保 DB_DATABASE、DB_USERNAME、DB_PASSWORD 正确 我知道卢卡斯了!我刚刚通过 phpmyadmin 创建了一个数据库并更新了.env 中的属性。请查看更新后的问题!【参考方案2】:

首先您将 .env.example 的名称更改为 .env,然后在其中配置您的数据库名称设置。之后运行 composer install 来安装你的项目依赖项。确保您的网络服务器已启动并正在运行

【讨论】:

我应该在问题中提到这一点,但我已经将 .env-example 复制到了 .env 文件中。数据库属性已经在我收到的项目中设置,但我没有在批量 laravel 文件中发送的数据库。这是造成问题的原因吗?【参考方案3】:

这是一个 laravel 项目的基本安装过程。我将尝试解释它们中的每一个,以便您能够自己找出错误。

获取源代码

您首先需要获取应用程序的源代码。大多数时候它是通过 git 完成的。例如,您需要输入 git clone https://github.com/miracuthbert/saas-boilerplate.git yoursaasproject 来克隆托管在 github 上的存储库 here

安装依赖

通过键入转到您之前获得的源代码目录的根目录 cd projectname。 laravel 框架使用 composer 作为它的依赖管理器。所以你需要安装它。 (你已经做了什么) 然后,从项目的根目录中,按相同顺序键入以下指令:

composer install

composer update

环境配置

laravel 框架的环境变量是通过一个 .env 文件来管理的。通常会提供一个名为 .env.example 的示例文件。您将在项目文件夹的根目录中找到它。假设您使用的是带有 bash 提示符的终端,请键入以下命令将 .env.example 复制到 .env 文件:

cp .env.example .env

获得新的 .env 文件后,输入

php artisan key:generate

在您的 .env 文件中生成安全密钥

根据您打算使用的数据库管理系统的类型,这里有一些特定的配置可以添加到您的 .env 文件中:

MySQL

如果您选择 MySQL 作为 DBMS,请在 .env 文件中设置以下值:

     DB_CONNECTION


     DB_DATABASE


     DB_USERNAME  


     DB_PASSWORD

homestead 是默认的 DB_USERNAME,localhost 是默认的数据库主机。本地主机完全可以在本地工作,但您需要将 DB_USERNAME 更改为具有相应密码的 DBMS 的实际用户。

Sqlite

如果您使用 sqlite,请键入以下内容创建一个新的 sqlite 数据库:

`touch database/database.sqlite`

设置数据库后,输入以下命令来创建和填充表: php artisan migrate --seed

您可能还需要编辑 .env 中的其他变量。 laravel 官方文档是你最好的伙伴。 据我所知,这是您需要做的。

至于驱动程序错误,这里有几个潜在的解决方案改编自 here 提出的类似问题的答案:

请务必在 app/config/database.php 中配置 'default' 键

对于 mysql,这将是 'default' => 'mysql',

如果您收到 [PDOException] 找不到驱动程序错误,请检查您是否安装了正确的 PHP 扩展。您需要安装并启用 pdo_mysql.so 和 mysql.so。有关如何执行此操作的说明因操作系统而异。

对于 Windows,mysql 扩展应该与官方 PHP 发行版一起预下载。只需编辑您的 php.ini 并取消注释 extension=pdo_mysql.so 和 extension=mysql.so 行

另外,在 php.ini 中,确保将 extension_dir 设置为正确的目录。它应该是 PHP 安装目录中名为 extensions 或 ext 或类似的文件夹。

原始答案中给出了其他说明,但我只推荐我理解的那些。它最初是为 postgres dbms 编写的。

如果还有问题,请查看laragon。它有点像 xamp(您似乎在 Windows 操作系统上使用),但更强大且更易于使用。 可以在几分钟内轻松设置主要的后端语言和框架。这包括带有 laravel/symfony、ruby 和 Ruby on Rails、python 和 Django 的 php。 它允许您轻松管理同一编程语言的多个版本,并且是完全可扩展的。 如果您是 Laravel 或后端开发的新手,并且正在使用 Windows 操作系统,那么这是必须具备的。

【讨论】:

感谢您的回答!不幸的是,我仍然遇到could not find driver 错误

以上是关于为啥我不能查看这个 laravel 项目?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不能使用 composer 创建 Laravel 项目?

Laravel 路由问题:自动重定向到根文件夹

为啥这个 PHP 代码不能输入到链接 TAG href 属性? (本地主机,不使用 laravel)

为啥我有这个 laravel 错误?

Git克隆的laravel 5.2项目不会迁移

laravel 认证为啥不能去掉email