Laravel学习过程中的一些坑(持续更新)

虚拟机启动失败

  1. 检查环境变量中是否有vagrant的环境变量
  2. 如果有环境变量的话,试着重装一下vagrant
  • 最后最后一定记得vagrant destroy then vagrant up --provision

创建新项目失败

  1. 主要问题
    在运行laravel new laravel时出错,具体错误提示如下
Crafting application...
PHP Warning:  file_put_contents(/var/www/html/laravel_85da3efcde6c8c9eff2bc6c5307f3bba.zip): failed to open stream: Permission denied in /home/vagrant/.composer/vendor/laravel/installer/src/NewCommand.php on line 133

Warning: file_put_contents(/var/www/html/laravel_85da3efcde6c8c9eff2bc6c5307f3bba.zip): failed to open stream: Permission denied in /home/vagrant/.composer/vendor/laravel/installer/src/NewCommand.php on line 133
PHP Warning:  ZipArchive::extractTo(): Permission denied in /home/vagrant/.composer/vendor/laravel/installer/src/NewCommand.php on line 151

Warning: ZipArchive::extractTo(): Permission denied in /home/vagrant/.composer/vendor/laravel/installer/src/NewCommand.php on line 151
PHP Warning:  ZipArchive::close(): Invalid or uninitialized Zip object in /home/vagrant/.composer/vendor/laravel/installer/src/NewCommand.php on line 153

Warning: ZipArchive::close(): Invalid or uninitialized Zip object in /home/vagrant/.composer/vendor/laravel/installer/src/NewCommand.php on line 153
You should verify that the "storage" and "bootstrap/cache" directories are writable.

In Process.php line 334:

  The provided cwd does not exist.


new [--dev] [--force] [--] [<name>]
  1. 原因分析
  • 目录权限没有给够
  1. 解决方法(原文地址
    首先进入根目录,执行以下命令
sudo chown vagrant:vagrant code

项目启动失败

  1. 主要环境
  • Ubuntu16.04腾讯云服务器
  • 宝塔面板
  • Nginx1.15+PHP7.0+MySQL5.5
  1. 报错内容
    访问主页时
Parse error: syntax error, unexpected '=' in /www/wwwroot/vendor/laravel/framework/src/Illuminate/Support/Arr.php on line 380
  1. 主要原因:PHP版本太低,换一个7.1+的版本就行了

多站点配置

在Homestead目录下依次运行以下命令

vagrant up
vagrant ssh
serve blog.test /home/vagrant/code/blog/public
vagrant provision
vagrant reload

其中的blog.test是站点名,blog是项目名

表单验证

No message

  1. 解决办法
    表单提交时显示No message,这是因为路由不对着了
    只需将Route::get()改为Route::any()即可
  2. 原因
    由于表单提交方式为post,页面请求方式为get,路由中两种方式都得包括,所以选择any

用户认证

在路由中添加->middleware(‘auth.basic’)和->middleware(‘auth’)的区别

前者弹出一个弹窗,后者则弹出一个用户登录界面,前者对用户十分不友好,不建议使用。

Composer install出错

报错内容

Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Installation request for mongodb/mongodb 1.4.2 -> satisfiable by mongodb/mongodb[1.4.2].
    - mongodb/mongodb 1.4.2 requires ext-mongodb ^1.5.0 -> the requested PHP extension mongodb is missing from your system.
  Problem 2
    - mongodb/mongodb 1.4.2 requires ext-mongodb ^1.5.0 -> the requested PHP extension mongodb is missing from your system.
    - jenssegers/mongodb v3.5.1 requires mongodb/mongodb ^1.0.0 -> satisfiable by mongodb/mongodb[1.4.2].
    - Installation request for jenssegers/mongodb v3.5.1 -> satisfiable by jenssegers/mongodb[v3.5.1].

原因

  • php版本不同

解决方法

composer install --ignore-platform-reqs 或者 composer update --ignore-platform-reqs

如果还解决不了的话,删除vendor和composer.lock重来

数据库迁移失败

有外键关联时

  1. 报错如下
    报错信息
  2. 可能原因:两个关联的字段类型不一致

创建软链接失败

第一种

  1. 报错信息
    报错信息
  2. 可能原因:权限不够
  3. 解决办法:用管理员身份运行cmd,在cmd中启动Hometead
    注意:不要用cmder运行

第二种

  1. 报错信息
    报错信息
  2. 可能原因:已存在一个软链接
  3. 解决办法
# Go to /public directory and run:
rm storage
# Go to Laravel root directory and run:
php artisan storage:link

猜你喜欢

转载自blog.csdn.net/qq_42094066/article/details/83417869