NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
## 搭建laravel/homestead开发环境(win10&macos) ~~~ // 第一步,安装virtualbox // 第二步,安装vagrant // 第三步,下载homestead管理脚本 git clone https://github.com/laravel/homestead.git // 第四步,创建homestead初始配置文件 bash init.sh // 第五步,创建ssh-keygen ssh-keygen -t rsa // 第六步,将虚拟机ip地址和项目域名写入host文件 192.168.10.10 homestead.app // 第七步,启动vagrant(此过程会自动下载laravel/homestead) vagrant up // 登录vagrant vagrant ssh // 注:homestead配置文件一旦发生变更,vagrant需重启才能使配置生效 vagrant provision ~~~ ## 常见错误 #### 无法加载盒子 ~~~ $ vagrant box add metadata.json ==> box: Loading metadata for box 'metadata.json' box: URL: file://D:/Laravel/metadata.json An error occurred while downloading the remote file. The error message, if any, is reproduced below. Please fix this error and try again. Invalid file://hostname/, expected localhost or 127.0.0.1 or none 注:下载的vagrant有问题,安装用教程中迅雷链接下载的2.0.2版本vagrant再次加载盒子。 ~~~ #### 加载了盒子之后启动vagrant仍然会下载最新盒子 ~~~ 注:每个版本的homestead管理脚本里面有指定盒子版本,尝试下载对应版本的管理脚本。 ~~~ [Homestead安装大法和总结一些坑](https://blog.csdn.net/min903245074/article/details/77954857) ## mac中使用composer 安装laravel #### 第一步,安装composer ~~~ // 在命令行执行 curl -sS https://getcomposer.org/installer | php // 如果没安装 curl 执行以下代码 php -r "readfile('https://getcomposer.org/installer');" | php // 然后执行 sudo mv composer.phar /usr/local/bin/composer // 修改 composer的权限 sudo chmod a+x /usr/local/bin/composer // 注意 sudo mv composer.phar /usr/local/bin/composer` 不用创建 composer 目录 ~~~ #### 第二步,安装 Laravel ~~~ // 命令 composer create-project laravel/laravel blog 5.5.* --prefer-dist // 如遇到下面的问题 [Composer\Downloader\TransportException] Content-Length mismatch, received 22777 bytes out of the expected 362836 // 尝试执行以下命令进行解决 composer config -g repo.packagist composer https://packagist.phpcomposer.com // 现在,cd到你的项目目录,运行以下命令启动项目。 php artisan serve // 在浏览器中输入http://localhost:8000,不出意外的话,就可以看到运行的结果了。 ~~~ #### 执行php artisan migrate报错 laravel改变了默认的数据库字符集,现在使用utf8mb4 解决方案:在App\Providers\AppServiceProvider类中引入: `use Illuminate\Support\Facades\Schema;` 在boot方法中添加代码: `Schema::defaultStringLength(191); `