Linux 下進行 PHP 開發,相比 Windows 環境有哪些好處?

一般在Linux下以什麼方式或工具進行PHP開發?這樣有什麼好處呢?在Linux下開發需要加強哪方面能力呢?


這裡只講好處

  • 保持開發環境和線上環境一致,比如一些開發人員會因為手誤寫錯了文件的大小寫,本地win調試一切OK,傳上去之後就報錯了。再比如,php處理圖片如果你不想用自帶的GD庫而用ImageMagick,代碼推上線之後,不需要再麻煩地改動。
  • 裝軟體裝擴展是真方便,fedora、ubuntu都有豐富的資源,裝個php、mysql,都只是敲幾句命令的功夫,win你還得什麼xampp、wamp,裝完之後你想加個擴展什麼的,那就。。。
  • 很多軟體只有Linux版,或是win版裝起來簡直想撞牆,比如Memcache,比如以前的nginx。
  • git為linux而生,更健壯更穩定,不過gui版就。。。。。省略吐槽部分。。。
  • 方便地php編譯和php擴展編譯,win的編譯。。。能別裝VC這種怪物級的玩意嘛。。。
  • php部署運維用的一些腳本可以直接調試,直接上線使用。


更接近生產環境的話,能夠免去一些細微的問題。比如我遇到過的一個:項目使用了 spl_autoload 自動載入類文件,而 PHP 中類名不是大小寫敏感的,Windows 文件名也不是大小寫敏感的,於是一切從正常。到了生產環境變成了文件大小寫敏感,於是 require 文件失敗。

除此以外,PHP 項目不一定是純粹 PHP 的,其依賴單獨編寫的後端也是很常見的事情。Linux 下開發可以免去 Cygwin 之類的模擬器,更加方便也更加嚴密。


瀉藥,

一般用netbeans。

1.完美模擬生產環境。

2.各種包安裝起來很是方便,很多獨特的軟體只有linux版,你想make就make,windows可以么?

3.強迫自己在開發的時間,必須去了解linux這個系統,各種命令,各種環境的搭建,擴展自己的知識面。

如你想做用來工作的話,考慮用類Unix系統吧!

你想娛樂?抱歉,這不是類Unix的特長,就你裝個QQ你都得頭痛欲裂。

剩下的和@Bruce、 @飛雪連天 說的一樣。


我用PHP已經4年了,最開始用Linux,到後來用Windows,現在用Mac,覺得可以比較淺的說一下題主的問題。

  • 一般在Linux下以什麼方式或工具進行PHP開發?

編輯器:愧對Linux了,我用的發行版開始是Ubuntu,後來是CentOS,一直沒有用VIM或者Emacs這些神器,剛開始用Eclipse,後來一直是Sublime Text。大多數常用的編輯器在Linux下都有對應的版本,這點幾乎沒什麼好說的。

環境:本地搭建LAMP/LNMP,這個沒什麼好說的。

  • 這樣有什麼好處呢?

目前常見的PHP Web伺服器幾乎都是Linux的。

在Linux上開發,首先可以保證的是代碼的兼容性,不會出現例如樓上說的大小寫等問題。

第二,大多數Linux的包管理機制對於PHP開發人員來說非常友好,你只需要輸入幾個簡單的命令,修改為數不多的幾個配置文件就可以搭建一個性能相當不錯的Web伺服器,而在Windows下,簡直是痛不欲生。

第三,你可以在平時使用Linux的過程中,學到不少基礎的Linux知識,這一點對於PHP開發也是非常有必要性的。

  • 在Linux下開發需要加強哪方面能力呢?

想了一下,在Linux下開發好像沒什麼特殊的要求,只要會使用一些基本的命令就行了。

我的開發方法一直是在本地寫代碼,同時sublime text配置sftp插件http://blog.wpjam.com/m/sublime-text-2-sftp/,在保存時同時上傳到測試伺服器(Linux),代碼運行在測試伺服器上,非常的方便,和在本地寫差不多。因為Sublime支持Linux,Windows,Mac三個平台,所以這種方法是隨時可以無痛苦的遷移的。

下面來吐槽一下Linux。我實在不能忍受Linux的圖形界面,桌面截圖一條龍,運行起來一條蟲。Mac、Windows的圖形界面都可以秒掉Linux的,不知道是怎麼回事,我用Linux老是可以把圖形界面搞崩潰,難道是我的坐姿不對?還有噁心的中文輸入法,不管怎麼配置,連Mac的中文輸入都比不上,能和Windows去比?

總結:

Linux用來老老實實的做伺服器就行了,在你是真的要寫代碼的情況下,還是建議不要用Linux作為桌面,但是建議讓你正在調試的代碼跑在Linux的環境下面。


多方面考慮 肯定還是WIN下方便...

1.招人成本問題 不是每一個人都非常熟練LINUX下環境.招這樣的人 你得開多少工資.

2.人力培訓問題 好吧,你說招個不會的人,來培訓成LINUX下開發,總的有人教,有人帶吧?再者萬一別人實在不習慣,試用期跑路了怎麼辦?

3.各種擴展問題 除了很冷門的庫,基本上都有WIN版..就算沒WIN版.能部署到測試環境..開發環境connect到測試環境也可以解決啊?(我們的REDIS,SPHINX就是這樣乾的).

4.上線部署問題 回答里說環境一致簡直是扯淡的...這世界上沒人能保證2個環境一模一樣...環境相似的問題有很多方案解決啊...例如:測試環境在linux下..模擬線上環境即可... 或者在線上的機器部署個預發布環境..上線之前先測試通過,再到預發布看看..冒煙測試一下..再部署能省事很多了.

還是鄧同學說的好 不管黑貓 白貓抓到老鼠 就是好貓...

當然了 凡事也不能絕對.增強自己的linux下開發能力確實對自己有幫助...自個分辨吧.各有各的理


裝軟體裝擴展是真方便,fedora、ubuntu都有豐富的資源,裝個php、mysql,都只是敲幾句命令的功夫,win你還得什麼xampp、wamp,裝完之後你想加個擴展什麼的,那就。。。

你用過win下的集成環境么???win下加個擴展多簡單你知道不???


在linux 版本管理更方便些... 例如git

一些php框架更喜歡命令行方式... 例如yii

linux操作為以後的構架師做準備.... 例如 以後帶技術團隊,主要在伺服器上開發...

linux更專註於技術.. 例如 QQ很難用...沒有QVOD....


開發上用windows還是比較方便 的。彆強迫自已一定要用linux,找麻煩哪。


好處就是不會寫著寫著代碼覺得好苦逼要不要打一把dota


作為一個在ubuntu上寫過幾年PHP的碼農,簡單總結下

1. 自由與封閉

linux是free/open的象徵,windows則相對更封閉

在linux上只要你想,而且你代碼功力夠,你可以修改幾乎所有的東西,這條路的遠方,是自由,在linux里,你是root ,你是god,而windows,明顯不可能

舉個例子,ping這個命令,你可以自己找到源碼,按照自己的需求修改,然後編譯安裝到你的系統里,我干過這個事

2.效率

linux下很多東西都是提高效率的典範,比如vim,你可以使用spf13這樣的開源配置文件,也可以折騰自己的配置文件,windows下用vim則會非常噁心,CMD不能直接全屏(可以修改做到全屏)

linux下面絕大部分東西都是字元界面操作,效率更拋開圖形界面幾條街,

3.調試及工具

linux is born for server,上面有無數的工具方便碼農們進行調試,log 可以tail,進程課可以strace,請求個url ? 有wget curl,定時任務有crontab,這些瑞士軍刀很多在windows有仿版,但是很難用,比如grep,有些則連仿版都沒有,比如strace

4.思維方式

linux的思維方式有很多可以借鑒之處,比如KISS原則,keep it simple ,stupid, 這個難道不可以用來我們設計項目,分解需求,代碼編寫用么?

另外,linux下絕大部分都採用字元界面,這並不是簡陋,我覺得更符合金庸的那句話"重劍無鋒大巧不工",因為字元操作是最直接,最高效的

5.血統

linux生來就是為了程序員,生來就是作為伺服器,做開發是不是需要一個有著伺服器血統的操作系統? 還是選一個從桌面過度改進的server版windows?

為什麼叫做血統,因為太多的東西植根於骨子裡,早就跟靈魂無法分開

6.逼格

coder using linux 可以嘲諷coder on windows,反之不成立

不要打我

寫來寫去,最後總結下

linux是最適合PHPer的操作系統,你可以從上面學到無數的東西,上面也有你進階所需的所有東西,windows則更像一個蠟像館裡面的分身


如果實際部署環境是在Linux上的話,調試的時候方便一些。除此之外,想不到什麼更多的好處。Windows也有git


有點腦火


理論上與開發平台無關. 但使用linux開發會讓你走的更遠


推薦閱讀:

代碼使用std::thread,使用-static -lpthread靜態編譯後,運行段錯誤的問題?
C語言中在一個函數中定義另一個函數是否可編譯並運行?
如何選購用於ArchLinux的筆記本?
初學 Linux,應該看什麼書,從哪裡下手?有哪些可以自學以及交流的網站?
同樣的代碼在windows平台和在Linux平台上運行結果不同?

TAG:Web開發 | 程序員 | PHP | Linux | 計算機網路 |