在win8.1下安裝laravel5.1時碰到的坑不少,但總算搞掂,真有點不容易。
安裝好php後,安裝laravel的方法有如下幾種。
1、先安裝好composer, 再用composer下載資源並安裝,命令如下:
composer create-project laravel/laravel your-project-name --prefer-dist
2、先用composer全域下載到composer的主目錄,然後進入網站項目的上級目錄運行laravel new project-name的方法安裝,命令依次是:
composer global require "laravel/installer=~1.1"
laravel new project-name
3、下載laravel installer安裝包解壓到指定目錄,或者自行設計composer.json檔案放到指定目錄,然後進入目錄運行安裝:
composer install
4、直接擷取安正超同學的包,放到指定目錄即可。
以上所有方法我都試過,雖然最後都成功了,但是過程都不順利,都各有不同的問題需要解決(最後當然都解決了!)。下面我一一說一下。
1、除了最後一種方法,其他的方法都依賴了composer的使用,所以如果你使用第一種或者第二種,你都得要先安裝和配置好composer,你可以跳到後面去看關於composer的安裝和配置。
2、第一種方法是將laravel安裝到目前的目錄的一個以項目名字為名稱的子目錄中,是一種最可靠的方法,當然前提是你的composer可以順利串連到laravel的庫repository。
第二種方法是將laravel的安裝包檔案下載到composer的主目錄(見後),你需要運行目錄中的vendor/bin/laravel命令來進一步安裝一個新的laravel項目。
laravel new blog
注意,在這個地方,一般都會提示找不到laravel命令,官方的文檔中提到,要將~/.composer/vendor/bin放到系統的PATH變數中去,這是一個坑,很多人不知道這個在哪裡,其實是在composer的主目錄中,composer的主目錄可以通過composer config來查看,對於win8系統,這個目錄預設是在C:\Users\MyUserName\AppData\Roaming\Composer\vendor\bin。
在敲入上述命令之後,很多情況下,都會非常慢,提示行一直顯示application crafting...這樣一個簡短的資訊,請一定要耐心等待,一般能夠成功安裝。
第四種方法不需要安裝,但是你得在項目根目錄下運行下面的代碼產生一個KEY,才能訪問到系統的首頁。
php artisan generate:key
3、以上的所有方法,安裝完成之後,如果你的系統是放在htdocs子目錄blog中,那麼都可以通過http://localhost/blog/public來訪問。
如果通過在根目錄下運行如下代碼:
php -S localhost:8888 -t public
那麼你可以通過在瀏覽器中輸入http://localhost:8888來訪問首頁。也可以通過如下命令來達到這個目的:
php artisan serve
這個命令預設將連接埠設定為8000,並自動把網站根目錄設定為public,所以你可以通過http://localhost:8000就可以訪問首頁了。
有人認為總是帶個連接埠,顯得不方便,如果能改成一個網域名稱就好了,沒有問題,方法如下,首先通過apache來添加虛擬機器主機(推薦UPUPW),注意一定要將public目錄設定為網站的目錄,並設定一個虛擬網域名稱(假若是blog.dev)指向它,接著找到系統的hosts檔案,對win8.1,該檔案位於:C:\windows\system32\drivers\etc下面,在裡面添加一項如下:
127.0.0.1 blog.dev
這樣不出意外的話,你可以通過訪問http://blog.dev/來看到laravel的歡迎頁面了!
但是,很多人到這一步之後,發現就出錯,有兩種情況,一種是出現空白頁面,另一種是錯誤的提示資訊。此時會發現在public目錄下的其他php代碼都可以訪問,例如http://blog.dev/test.php,但是就不能顯示laravel歡迎頁面。這裡真的是一個坑,出現空白,說明伺服器的error資訊沒有被顯示,可是之前通過http://localhost/blog/public是可以訪問的!但是本人試過的確是這樣,將php.ini中的
display_errors = Off
改為:
display_errors = On
這樣,可以看到空白頁變成了出錯資訊的頁面,看到如下錯誤資訊:Warning: require(): open_basedir restriction in effect.
進入http.conf檔案或者http.vhosts.conf檔案的open_basedir的值修改,很多LAMP組件會預設將open_basedir設定為與網站
根目錄一致,但是laravel有點變態,這裡必須設定為上級目錄,即此處的blog目錄。設定完畢之後,重啟apache,錯誤終於消除了。
至此,完成了laravel5的安裝問題,並且實現了本地虛擬機器主機的使用。
補充說說composer的幾個坑:
composer安裝時,有兩個方法,第一種是下載composer.setup.exe點擊安裝,此處不表,且看第二種方法,簡單介紹如下:
先下載composer.phar到某個目錄,運行如下代碼:
php -r "readfile('https://getcomposer.org/installer');" | php
然後在該目錄運行:
echo @php "%~dp0composer.phar" %*>composer.bat
產生一個composer的批次檔,可以在任意地方直接通過composer這個命令來代替php composer.phar.
別忘了將此目錄的路徑寫入系統的path變數中.
注意:
1.如果是直接點擊安裝composer.setup.exe檔案,那麼一般會在C:\ProgramData\ComposerSetup\bin目錄下也會產生一個laravel.bat 這就會和installer造成衝突,最好的辦法是把這個檔案改個名字,比如laravel_start.bat,然後複製到wwwroot目錄下,這樣就不用每次CMD都從C盤開始了。
2.composer.phar將會被安裝到預設的使用者目錄下,這本來就是composer的home目錄。
3.不管怎麼安裝composer,其home目錄在windows下都是使用者的一個特定子目錄,具體可以通過如下命令查看:
composer config -l -g
composer安裝之後,由於packagist.org無法訪問導致,無法安裝laravel,需要將伺服器位址修改為國內的鏡像。
運行如下代碼,可以全域修改您的packagist目標伺服器:
composer config -g repositories.packagist composer http://packagist.phpcomposer.com
或者針對某次安裝,您可以在你的具體的composer.json檔案中加入如下代碼:
"repositories": [
{"type": "composer", "url": "http://packagist.phpcomposer.com"},
{"packagist": false}
]