如果我在Windows上編寫PHP(如果重要的話),Apache與在另一個OS和Apache上編寫PHP相同?我不是指文件路徑之類的東西。謝謝。PHP for Windows與Linux,Mac等相同嗎?
回答
晴,但你有幾件事情需要注意:
- 在* nix系統路徑名稱是區分大小寫的,而不是在Windows下。
- 在* nix系統下,路徑分隔符是
/
。在Windows下,它是\
,但PHP自動翻譯/
。要麼使用DIRECTORY_SEPARATOR
常數,要麼始終使用/
。 - 在* nix系統下,路徑遍歷模式不同。沒有驅動器盤符這樣的東西。有相反的掛載點。
- 在* nix系統下,默認情況下,文件權限比Windows上的嚴格。
- 某些功能在Windows下不可用或行爲不同。這些主要用於低級功能(內存狀態,系統狀態)。參考PHP文檔。
- 如果您使用
exec()
或任何其他類似的功能,命令將不會相同。請參閱您的系統文檔。
關於Apache:
你可以在一臺服務器某些時候投中了一些斷枝使用PHP作爲一個模塊並通過fcgi
其他人使用它。兩個配置相同的Apache將以相同的方式運行。
鑑於PHP只是一種語言,應該不會有問題。無論你走到哪裏,都應該是一樣的。
是啊......設置它可能有點不同,但它的用法與腳本語言相同。
只要你沒有exec
系統命令或使用無效的文件路徑,大多數事情應該沒有問題。我一直在使用PHP一段時間,在一臺Windows機器上開發,然後把它移到一個Linux機器上,我想不出任何我遇到的麻煩。
正確的答案是:「這取決於」。
大部分PHP在任何操作系統上的功能都是一樣的。儘管有一些警告,但通常有些功能只是在Windows上不起作用。 (例如,getrusage())。有時候,爲PHP尋找windows庫也很困難,因爲pecl4win(一個包含所有PECL庫的窗口編譯的站點)的死亡。這使得像APC(替代PHP緩存)這樣的事情變得相當麻煩。
這就是說,PHP手冊有很好的文檔記錄什麼不適用於Windows。
我還沒有使用過很多的PECL庫,但是我還沒有找到Windows所需的庫。雖然,就像我所說的,我對PECL的經驗是有限的。 – 2009-07-21 01:08:13
是的,它被擊中或錯過。自從http://pecl4win.php.net/發生故障以來。它一直是meh。我的同事使用Win,他必須圍繞谷歌尋找許多圖書館的DLL,並希望他們爲他的PHP版本編譯。 – hobodave 2009-07-21 01:10:00
它看起來像pecl4win沒有停下來,但是。但我不知道他們已經「準備一個新的構建系統」多久了。 – 2009-07-21 01:29:12
我要紀念這個社區維基,因爲我只是複製和粘貼我的回答從另一個very similar thread:
差不多,但並不完全。有幾件事你必須注意。
1)文件名稱:Windows是不區分大小寫的操作系統。如果你創建一個文件Foo。PHP,你可以使用include('Foo.php')
或include('foo.php')
來包含它。當你將你的項目移動到Linux/Unix時,如果你沒有正確的案例,這將會中斷。
2)有一些語言特定的平臺差異,通常涉及到依賴於集成的OS功能的東西。這些很少出現,但你偶爾會碰到它們。例如,直到版本5.3.0之前,checkdnsrr()函數在Windows PHP中不存在。
3)安裝。與Windows相比,您爲Linux/Unix獲得的PHP包可以非常廣泛地包含在默認安裝中。您需要確保在相反平臺的開發框中測試您的應用程序,以確保您已經編譯/添加了所有必需的庫,否則您將從其他正常的應用程序中獲得一些很好的致命錯誤。
有一定的差異,如其他用戶注意(我就不重複了這些,已經有偉大的答案;最討厭的一點是區分insensivity在windows下的文件名,恕我直言),所以如果你是使用Linux服務器在生產環境中部署網站,偶爾在Linux上測試它可能會很有用。
如果您不想在您的計算機上安裝Linux,並且擁有足夠強大的計算機(至少2個內核和2 GB內存,我會說),則可以使用虛擬機,並使用虛擬機這些軟件(均爲免費):
這也將幫助您瞭解Linux的一些基礎知識 - 這是不是一件壞事,要知道,如果你正計劃從事專業的PHP開發工作,因爲Linux遠非如此當涉及到PHP web服務器時,使用的是比Windows更多的礦石。
- 1. linux上的「git-svn clone」與mac上的「git svn clone」相同嗎?
- 2. Java編譯器與Linux/Windows上的編譯器相同嗎?
- 3. 「等同」與「等於」(或「絕對等於」)相同嗎?
- 4. 在與Mac/Windows不同的Mac上運行PHP和MySQL
- 5. Delphi for windows and linux
- 6. Windows Mobile Emulator For Linux
- 7. php urlencode與java urlencode相同嗎?
- 8. PHP pthread與POSIX線程相同嗎?
- 9. 什麼是Windows的「pidof」等同於Linux?
- 10. 的Windows蜂鳴()等同於Linux
- 11. C for循環與PHP for循環不同嗎?
- 12. 是StringComparison.Ordinal,它與InvariantCulture相同,用於測試相等性嗎?
- 13. 在Mac OS X上生成與Windows和Linux不同的結果的相同C代碼
- 14. Linux下JavaFX的默認字體大小與Windows相同
- 15. 是這個linux的串口配置與windows相同
- 16. 是否有與Windows InetIsOffline函數相同的Linux?
- 17. 的Linux/Mac OS X的等價物Windows通信基礎
- 18. Meteor for Linux使用Windows 10 Linux bash shell
- 19. 在線課程學習PHP與Rails for Zombies相似嗎?
- 20. PostgreSQL API for PHP不支持與事務相關的方法嗎?
- 21. 如果我使用QT For Windows,我的應用程序能在Linux/Mac/Windows上運行嗎?
- 22. Windows的CSS根路徑與Mac不同?
- 23. 相等的值不相等嗎?
- 24. Mac,Windows,Linux - Web開發的平臺?
- 25. C linux等價於windows QueryPerformanceCounter
- 26. DbContext與DataContext相同嗎?
- 27. LWP與libwww-perl相同嗎?
- 28. viewInstance.undelegateEvents()與$(this.el).unbind()相同嗎?
- 29. '<?='與'echo'相同嗎?
- 30. 是480x800與800x480相同嗎?
還有一些在win32下可用但不是* nix的函數,例如com/.net模塊。 – VolkerK 2009-07-21 08:24:53
此外,$ _SERVER變量的存在可能會有所不同,具體取決於PHP是否運行在Apache上,而Apache往往是nix用作HTTP服務器的地方,而Internet Information Services(IIS)則是Windows傾向於作爲HTTP服務器的地方。 – joebert 2009-07-23 11:31:01