Windows下安装Laravel

Windows下,我使用PHP是XAMPP里面自带的,XAMPP可以从 http://www.xampps.com/ 下载。

Composer安装

本来是应该从官网 https://getcomposer.org/download/下载安装的,但是被墙,中国人做了个镜像:http://packagist.cn/ 我自己用这个镜像安装后还是有问题:

1
2
3
4
D:\Programmer\laravel-v5.1.11>composer show monolog/monolog
[Composer\Repository\RepositorySecurityException]
The contents of http://packagist.cn/p/provider-latest%2496c1323f8988d6ff304275d52caa63774d906b9c1e908e72e2dcb6b4dfce24a5.json do not match its signature. This should indicate a man-in-the-middle attack. Try running composer again and report this if you think it is a mistake.
show [-i|--installed] [-p|--platform] [-a|--available] [-s|--self] [-N|--name-only] [-P|--path] [-t|--tree] [--] [<package>] [<version>]

没有深究是什么原因,很有可能是下面介绍的PHP SSL证书问题。

如果从官网下载https://getcomposer.org/Composer-Setup.exe安装不成功,原因是主要是PHP的SSL证书问题,用:

1
php -r "readfile('https://getcomposer.org/installer');" | php

方式也一样下载不了。

提示SSL证书错误,解决办法,可以参考 http://curl.haxx.se/docs/caextract.html ,下载两种证书中的任意一种,放到本地任意目录,例如我放到:

C:\xampp\php\cfg\ca-bundle.crt
然后修改php.ini,在openssl节添加(如果没有openssl节可自行添加)openssl.cafile 和 curl.cainfo,指向刚才下载的证书,如:

1
2
3
[openssl]
openssl.cafile=C:/xampp/php/cfg/ca-bundle.crt
curl.cainfo=C:/xampp/php/cfg/ca-bundle.crt

添加完后,验证是否正确:

1
2
3
4
5
6
7
8
9
10
11
12
C:\Users\mnstory>php -r "print_r(openssl_get_cert_locations());"
Array
(
[default_cert_file] => c:/usr/local/ssl/cert.pem
[default_cert_file_env] => SSL_CERT_FILE
[default_cert_dir] => c:/usr/local/ssl/certs
[default_cert_dir_env] => SSL_CERT_DIR
[default_private_dir] => c:/usr/local/ssl/private
[default_default_cert_area] => c:/usr/local/ssl
[ini_cafile] => C:/xampp/php/cfg/ca-bundle.crt
[ini_capath] =>
)

如果PHP的这个证书问题不解决,就算安装上composer,也会有错误,例如执行self-update报错:

1
2
3
4
C:\xampp\htdocs\laravel>composer self-update
[Composer\Downloader\TransportException]
The "https://getcomposer.org/version" file could not be downloaded: failed to open stream: HTTP request failed!
self-update [-r|--rollback] [--clean-backups] [--no-progress] [--] [<version>]

正常情况应该是:

1
2
3
4
C:\xampp\htdocs\laravel>composer self-update
Updating to version 44bc8e019f8b4ac711b647b0693f84061ac7bb38.
Downloading: 100%
Use composer self-update --rollback to return to version 1.0.0-alpha11

Laravel安装

网上的文档一般推荐是从Composer安装,我直接从 http://www.golaravel.com/download/ 下载 的Laravel 5.1.11版本,解压到xampp的htdocs目录下。

解压后(例如我解压到C:\xampp\htdocs\laravel目录),我们需要修改根目录下的.env文件来设置数据库连接环境变量。

先为Laravel生成数据库,我使用的是XAMPP自带的MySQL生成:

1
create database homestead;

然后在.env文件中配置,例如:

1
2
3
4
DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=root
DB_PASSWORD=

配置完数据库,可以修改下其他地方,看下config/app.php这个文件,其中,URL一节可修改为你当前的实际访问URL,例如:

1
'url' => 'http://localhost/laravel/public',

打开 http://localhost/laravel/public 你会看到欢迎界面。
当然,你也可以在Apache里面设置Root目录到C:\xampp\htdocs\laravel\public,这样,访问 http://localhost 即为网站主页。

使用Composer安装依赖库

有了Composer和Laravel后,如果你代码里面需要用到其他库,可以修改Laravel解压后根目录下的composer.json文件,或者用composer config -e命令打开此文件,在其require下添加依赖,例如,我想使用AMQP库,则添加:

1
"videlalvaro/php-amqplib": "2.5.*"

然后在根目录执行composer update,例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
C:\xampp\htdocs\laravel>composer update -vvv
Reading ./composer.json
Loading config file ./composer.json
Executing command (C:\xampp\htdocs\laravel): git describe --exact-match --tags
Executing command (C:\xampp\htdocs\laravel): git branch --no-color --no-abbrev -v
Executing command (C:\xampp\htdocs\laravel): hg branch
Executing command (C:\xampp\htdocs\laravel): svn info --xml
Failed to initialize global composer: Composer could not find the config file: C:/Users/mnstory/AppData/Roaming/Composer/composer.json
To initialize a project, please create a composer.json file as described in the https://getcomposer.org/ "Getting Started" section
> pre-update-cmd: php artisan clear-compiled
Executing command (CWD): php artisan clear-compiled
Loading composer repositories with package information
Downloading https://packagist.org/packages.json
Writing C:/Users/mnstory/AppData/Local/Composer/repo/https---packagist.org/packages.json into cache

安装PhpStorm IDE支持

用其他编辑工具的可以忽略此节。
PhpStorm是JetBrains公司的PHP开发IDE,使用起来非常方便,安装可以参考 http://segmentfault.com/a/1190000002912820

主要步骤为:

  1. 执行composer require barryvdh/laravel-ide-helper

  2. 在config/app.php的providers中添加:

    1
    Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class
  3. 生成IDE能读取的文件。

    1
    2
    3
    4
    5
    C:\xampp\htdocs\laravel>php artisan clear-compiled
    C:\xampp\htdocs\laravel>php artisan ide-helper:generate
    A new helper file was written to _ide_helper.php
    C:\xampp\htdocs\laravel>php artisan optimize
    Generating optimized class loader

    如果每次都手动生成IDE读取文件很麻烦,我们可以在composer.json的post-update-cmd中加入如下命令,保证helper在每次commit都会更新:

    1
    2
    3
    4
    5
    "post-update-cmd": [
    "php artisan clear-compiled",
    "php artisan ide-helper:generate",
    "php artisan optimize"
    ],
  4. 配置PhpStorm
    首先,安装插件。
    启动PhpSorm的初始化页面,在UI的左下角,点击”Configure”->”Plugins”->”Browse repositories”->搜索”laravel”->左边列表选择”Laravel Plugin”->右边点击”Install”->重启IDE
    然后,导入工程。
    在PhpSorm启动UI,点击”Create New Project from Existing Files”->”Web Server is installed locally, source files are located under its document root”->选择路径”C:\xampp\htdocs\laravel”->点击”Project Root”->”Next”->设置工程名字,其他的默认即可。

部署

开发环境开发完成后,一般都会将软件部署到运行环境,部署类似应用,一般有三步:

  1. 将数据库导出,然后在目标系统里导入,修改数据库连接。
  2. 将目录整个打包,上传到目标系统。
  3. 微调。
    对于Laravel就是不匹配的配置需要修改下,我只修改了.env里面的数据库密码和config/app.php文件下的URL。
    部署在LINUX系统上的时候,遇到了一个错误:
    mb error
    这个错误是由于没有安装mbstring导致,安装后解决:
    1
    yum install php-mbstring