Composer.json內容php
有可能會用到的bug:html
當使用php5自帶的file_get_contents方法來獲取遠程文件的時候(在個人自動化測試框架中有相似調用需求),有時候會出現file_get_contents(): failed to open stream: HTTP request failed!這個警告信息。git
解決的方法都是修改php.ini,把allow_url_fopen給啓用,改爲 allow_url_fopen = Ongithub
這樣作能夠解決某些人的問題,有人說在php.ini中,有這樣兩個選項:allow_url_fopen =on(表示能夠經過url打開遠程文件),user_agent="PHP"(表示經過哪一種腳本訪問網絡,默認前面有個 " ; " 去掉便可。)重啓服務器。json
可是有些仍是會有這個警告信息,想用完美的解決還差一步,還得設置php.ini裏面的user_agent,php默認的user_agent是 PHP,咱們把它改爲Mozilla/4.0 (compatible; MSIE 6.0;Windows NT 5.0)來模擬瀏覽器就能夠了,user_agent=」Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)」瀏覽器
Php.ini中:服務器
根據提醒去掉相關被禁止的函數:restful
切換composer的代理:composer config repo.packagist composer https://packagist.phpcomposer.com網絡
每次composer require *****/****** 某大神寫的第三方包,本身都是很感慨,大神厲害,何時我本身也能夠寫一個composer包裝裝逼,讓你們都用我寫的代碼,自豪感,油然而生,感受本身才真的是這個圈子裏面的人。好了,不廢話了,把我昨天建立的包,再來一遍,記錄下來,共你們參考。composer
1.首先,打開https://github.com/的官網,註冊一個帳號,以前我早就註冊了帳號,這裏就不展開了,相信你們都會註冊帳號。
2.建立本身的github倉庫,如圖
點擊右上角的 「+」號,選擇 「 New repository」,出現下面頁面:
接下來填寫本身的倉庫名,開始建立倉庫
找到倉庫地址複製,將倉庫克隆到本地,個人是放到 e:/source,若是這一步,你克隆的是git開頭的地址,你須要將你機器的ssh公鑰,和github綁定上,不然你是沒法克隆git開頭的倉庫地址的,這裏注意下,個人早就綁定了,因此,這裏能夠克隆。你想克隆git開頭的地址,你能夠本地生成ssh-key,就會在你本地生成幾個文件,把那個id_rsa.pub中的所有內容,放到github網站的SSH keys中便可,入口在設置setting裏面,設置好,就能夠克隆了
切換到abstarfish倉庫下面,這就是你的根目錄,這是裏面只有一個readme.md文件,(只須要記住composer.json在包的哪一個目錄下面,通常那就是包的根目錄了。)
如今咱們尚未composer.json文件,能夠根據composer文檔生成並編輯它,固然composer貼心的爲咱們準備了命令行,composer init,根據提示填寫
生成了composer.json文件,可是,還缺自動加載,咱們在composer.json中加入自動加載的代碼,圖:
接下來,按照psr-4的配置在根目錄下建立文件夾和文件,這裏的文件夾和psr-4配置要一致,我建立了一個Tool類,寫了一個靜態Hello方法,用於包的第一個版本測試,如圖
接下來,執行 composer install 包就裝好了,如圖
而後,根目錄下就多了一個vender目錄,它就是包的自動加載代碼,vendor/composer/autoload_psr4.php中生成命名空間和目錄的映射關係
psr-4文件
vender結構圖
接下來,咱們在根目錄下建立一個demo.php,測試一下,個人hello方法是否能夠用,代碼如圖
出現hello world 說明咱們的包能夠用了,而後編輯.gitignore文件,將lock文件放到忽略文件中,以下圖:
接下來,提交代碼到github倉庫中,
如今的倉庫中只有一個可憐的readme.md文件,提交命令如圖:
此時,咱們的github倉庫不在光禿禿,以下圖
咱們的包最後是要提交到
https://packagist.org/packages/submit 這個網站上,固然,你還要在這個網站上註冊一個帳號
而後才能夠上傳,咱們獲取github倉庫的https的倉庫地址,在packagist網站上點擊submit菜單欄,菜單欄地址https://packagist.org/packages/submit,
在packagist網站提交頁面,輸入github倉庫地址,checkout ,以後submit,如圖
check圖
submit圖
包就已經上傳完成了,此時,若是你想用這個包,是不能夠的,
你看,我在個人另一個項目中,加載這個包composer require abstarfish/abstartfish,不能發現如圖:
那咱們怎麼辦呢,難道就不能用了嗎?固然是否認的,git頁面咱們切換到abstarfish項目根目錄,提交修改,打一個v0.1的tag,而後提交tag到遠程github倉庫,如圖
點擊release,發佈一個版本
對勾必定要打上
對勾必定要打上,打上之後就是發佈版本了。
此時,packagist網站提示,包如今不是自動更新的須要配置 github server hook,接下來配置這個github server hook。回到github倉庫,找到settings,如圖增長一個server
這裏選擇packagist
輸入github帳號密碼
輸入密碼,提交,
user 就是你的github帳戶名,token這裏注意,他是你在packagist網站上獲取的,如圖
獲取到token,回到github網站,填寫token,並
點擊test server 測試一下,兩個網站的關聯
哈哈,到這裏,兩個網站就創建了關聯,咱們的包就能夠隨着github release版本的發佈,實現自動發佈了,如今能夠自動發佈了,好高興,再看,packagist網站提示,沒有了
到這裏,咋們的composer包,就作好了。
我找了本身的一個restful項目,在根目錄下 composer require abstarfish/abstarfish 安裝咱本身的包
項目包,下載下來了,哈哈,在看一下代碼,
和咱們的github上代碼一致,
而後,就是測試一下,個人包代碼到底能不能用,我在個人restful項目中,use 一下Tools類,
將代碼傳到服務器上,看看是否能夠生效,!!!!這裏注意一下,個人vender目錄是在git的忽略文件裏面,因此,我把代碼傳到服務器上,仍是找不到類庫,我必須在服務器上 執行composer install,才能將包裝在服務器上,剛纔只是把包下載到了本地,這個問題,致使我昨天浪費了好多時間調試。你們必定注意。
將abstarfish包裝到服務器上在線測試
這裏測試經過,能夠了,若是不放心,再來發佈一個0.2的版本
我服務器 composer update 的時候,會遇到下圖問題,個人是阿里雲服務器
直接修改composer.json 加上如圖的代碼:github.com 後面
https://www.cnblogs.com/Hzhihua/archive/2017/06/22/7064976.html 這是解決方法
而後在composer update,不得不吐槽一下,這個composer真是太慢了,鏡像改爲國內的,自行搜索吧。
做者:chinariver 連接:https://www.jianshu.com/p/280acb6b0b22 來源:簡書 簡書著做權歸做者全部,任何形式的轉載都請聯繫做者得到受權並註明出處。