解決所有環境問題

夜晚的雨發表於2020-10-12

經常看到有朋友發帖問某某環境下的某某問題。今天就寫一篇文章來說一說這個環境相關的問題

開發環境

PHP 執行的話一般要搭配 web 伺服器(apache、nginx等),但從 5.4 起,內部有了內建伺服器(絕不能用於生產環境),但可以配置開發環境

window 下開發環境配置
  1. 官網下載你需要的版本(選 windowamd64vc2015nonthread)版本,下載並解壓到你想要存放的目錄,假定為 c:/soft/php74,該目錄即解壓後根目錄。

  2. 配置環境變數

    • window10
      1.依次進入 控制皮膚-系統和安全-系統-高階-環境變數
      2.在系統變數中找到 Path 點編輯,然後新建,將 c:\soft\php74 目錄新增進去
      3.檢視是否安裝成功,開啟 cmd,輸入 php -v,如果顯示了版本號則成功

    • window7

      與 window10 類似,但介面沒那麼友好,找到環境變數後,在當前環境變數後面手動增加 ;c:\soft\php74

  3. 使用
    1.php 配置檔案,在 c:\soft\php7.4 下將 php.ini-development 檔案複製為 php.ini
    2.專案根目錄(有 index.php)的那個目錄啟動伺服器

    php -S localhost:8080
  4. 備註
    PHP 是與平臺高度耦合的,所以你需要安裝你下載的版本對應的 C 庫,如下載 vc2015,你需要去微軟官網下載 x86vc2015和amd64vc2015

  5. 安裝擴充套件

    • 擴充套件首選 composer 包,composer 包是使用 PHP 語言實現的,是在 PHP 上抽象的,不依賴於平臺
    • 而 PHP 擴充套件則與系統耦合,依賴於系統和對應庫的能力。所以有些擴充套件是在特定作業系統下是找不到的
      安裝擴充套件流程:
    1. 到 pecl 官網搜尋擴充套件,點選去看,找到對應的版本,點選 window圖示DLL (動態連結庫)進去找到當前 PHP 版本的擴充套件下載(有 thread, non thread,x86,x64 區別,注意匹配 PHP 版本)
    2. 解壓後找到擴充套件的 .dll 檔案,複製到剛才解壓 PHP 資料夾下擴充套件資料夾,c:/soft/php74/ext 目錄下
    3. 修改 php.ini 檔案,新增 extension={extension_name}
    4. 驗證
      php -m 檢視輸出結果
    5. 配置擴充套件
      php 配置是一個 ini 檔案,你可以這樣配置擴充套件選項
      [extension]
      key = value
    6. 備註
      有的擴充套件(比如 amqp)還有一個對應軟體庫的 .dll 檔案,這是軟體客戶端庫,你需要把它複製到 C:\Windows\System32 這個目錄。
      如果報錯擴充套件找不到,你把 php.ini 檔案中的 extension_dir 配置為絕對路徑
      extension_dir = "C:\soft\php74\ext"
      

windows 下這個環境足夠你用來進行開發了。homestread、虛擬機器,wsl,docker 對有些同學還是有些難度的,出了問題往往不能自己解決,而且不夠靈活與輕量。這個輕量、靈活。但你編寫程式碼始終要注意以下幾項:

  • 檔案編碼使用 UTF-8
  • 使用常量代替系統對應硬編碼,如 PHP_EOL 代替換行符,DIRECTORY_SEPARATOR 代替路徑分隔符
  • 始終大小寫敏感
    做到這幾點,你的程式碼就可以移植到其他系統的 PHP 上執行了
mac

跟 window10 類似,還是這個流程,但有幾個細節:

  1. 環境變數設定

    1. vim .bashrc
    2. PATH=$PAHT:{your}/{php}/{path}
    3. source .bashrc
  2. 擴充套件字尾是 .so 共享物件

docker

核心就是將程式碼目錄對映到容器內,然後在容器中使用內建伺服器

```shell
docker run -d -p 8080:8080 -v {your/app/root/}:/var/app -w /var/app php:{tag} php -S 0.0.0.0:8080

生產環境

生產環境下有很多考量,也有很多方式。推薦使用 docker-compose/docker-swarm 實現單機/多節點多軟體部署。這塊有些複雜,每個公司的專案考量、預算、人員技術都不一樣,所以不好統一說。如果你們有環境相關的問題,可以在這裡留言,我看到了會幫你解決。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章