Laravel学习过程中的一些坑
虚拟机启动失败
- 检查环境变量中是否有vagrant的环境变量
- 如果有环境变量的话,试着重装一下vagrant
- 最后最后一定记得
vagrant destroy then vagrant up --provision
创建新项目失败
- 主要问题
在运行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>]
- 原因分析
- 目录权限没有给够
- 解决方法(原文地址)
首先进入根目录,执行以下命令
sudo chown vagrant:vagrant code
项目启动失败
- 主要环境
- Ubuntu16.04腾讯云服务器
- 宝塔面板
- Nginx1.15+PHP7.0+MySQL5.5
- 报错内容
访问主页时
Parse error: syntax error, unexpected '=' in /www/wwwroot/vendor/laravel/framework/src/Illuminate/Support/Arr.php on line 380
- 主要原因: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
- 解决办法
表单提交时显示No message,这是因为路由不对着了
只需将Route::get()
改为Route::any()
即可 - 原因
由于表单提交方式为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重来
数据库迁移失败
有外键关联时
- 报错如下
- 可能原因:两个关联的字段类型不一致
创建软链接失败
第一种
- 报错信息
- 可能原因:权限不够
- 解决办法:用管理员身份运行cmd,在cmd中启动Hometead
注意:不要用cmder运行
第二种
- 报错信息
- 可能原因:已存在一个软链接
- 解决办法
# Go to /public directory and run:
rm storage
# Go to Laravel root directory and run:
php artisan storage:link