<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                在開始學習PHP實現之前,我們需要一個實驗和學習的環境。下面介紹一下怎樣在*nix環境下準備和搭建PHP環境。 > (*nix指的是類Unix環境,比如各種Linux發行版,FreeBSD, OpenSolaris, Mac OS X等操作系統) ## 1.獲取PHP源碼 為了學習PHP的實現,首先需要下載PHP的源代碼。下載源碼首選是去[PHP官方網站http://php.net/downloads.php](http://php.net/downloads.php)下載,如果你喜歡使用svn/git等版本控制軟件,也可以使用svn/git來獲取最新的源代碼。 ~~~ # git 官方地址 git clone https://git.php.net/repository/php-src.git # 也可以訪問github官方鏡像 git clone git://github.com/php/php-src.git cd php-src && git checkout origin PHP-5.3 # 簽出5.3分支 ? # svn地址不變,不過不推薦從這里簽出代碼 cd ~ svn co http://svn.php.net/repository/php/php-src/branches/PHP_5_2 php-src-5.2 #5.2版本 svn co http://svn.php.net/repository/php/php-src/branches/PHP_5_3 php-src-5.3 #5.3版本 ~~~ 筆者比較喜歡用版本控制軟件簽出代碼,這樣做的好處是能看到PHP每次修改的內容及日志信息,如果自己修改了其中的某些內容也能快速的查看到,如果你想修復PHP的某個Bug或者提交新功能的話,有版本控制也會容易的多,更多信息可以參考附錄:[怎樣為PHP做貢獻](#)。 > 目前PHP已經[遷移到Git](http://www.php.net/archive/2012.php#id2012-03-20-1)了,PHP的wiki上有關于 [遷移到Git的說明](https://wiki.php.net/vcs/gitfaq),以及[使用Git的流程](https://wiki.php.net/vcs/gitfaq) 在筆者編寫這些內容的時候PHP版本控制是還基于SVN的,上面提到的github鏡像地址目前已經沒有同步更新了, 由于把svn同步到git會對系統性能造成明顯影響,加上社區還沒有就到底是否遷移到git達成一致,所以也就停止了更新。 目前很多開源軟件都開始轉向了分布式版本控制系統([DVCS](http://en.wikipedia.org/wiki/Distributed_revision_control)), 例如Python語言在轉向DVCS時對目前的分布式版本控制系統做了一個[詳細的對比](http://www.python.org/dev/peps/pep-0374/), 如果以前沒有接觸過,筆者強烈建議試試這些版本控制軟件。現在Github的同步是實時的。 所以習慣Github的話,基本上可以把Github當做官方版本庫了。 ## 2.準備編譯環境 在*nix環境下,需要安裝編譯構建環境。如果你用的是Ubuntu或者是用apt做為包管理的系統,可以通過如下命令快速安裝: ~~~ sudo apt-get install build-essential ~~~ 如果你使用的是Mac OS X,則需要安裝Xcode。Xcode可以在Mac OS X的安裝盤中找到,如果你有Apple ID的話,也可以登陸蘋果開發者網站[http://developer.apple.com/](http://developer.apple.com/)下載。 > 如果你不愿意下載龐大的Xcode,也可以去[https://github.com/kennethreitz/osx-gcc-installer](https://github.com/kennethreitz/osx-gcc-installer)下載安裝包, 只安裝所需的命令行工具。 ## 3. 編譯 下一步可以開始編譯了,本文只簡單介紹基本的編譯過程,不包含Apache的PHP支持以及Mysql等模塊的編譯。相關資料請自行查閱相關文檔。如果你是從svn/git簽出的代碼則需要執行代碼根目錄的buildconf腳本以生成所需要的構建腳本。 ~~~ cd ~/php-src ./buildconf ~~~ 執行完以后就可以開始configure了,configure有很多的參數,比如指定安裝目錄,是否開啟相關模塊等選項: > 有的系統自帶的`autoconf`程序版本會有Bug,可能導致擴展的配置無法更新,如果在執行`./buildconf`時 報錯,可以根據出錯信息安裝合適版本的autoconf工具。 ~~~ ./configure --help # 查看可用參數 ~~~ 為了盡快得到可以測試的環境,我們僅編譯一個最精簡的PHP。通過執行 `./configure --disable-all`來進行配置。以后如果需要其他功能可以重新編譯。如果configure命令出現錯誤,可能是缺少PHP所依賴的庫,各個系統的環境可能不一樣。出現錯誤可根據出錯信息上網搜索。 直到完成configure。configure完成后我們就可以開始編譯了。 ~~~ ./configure --disable-all make ~~~ 在*nix下編譯過程序的讀者應該都熟悉經典的configure make,make install吧。執行make之后是否需要make install就取決于你了。如果install的話最好在configure的時候是用prefix參數指定安裝目錄, 不建議安裝到系統目錄, 避免和系統原有的PHP版本沖突。在make 完以后,在sapi/cli目錄里就已經有了php的可以執行文件. 執行一下命令: ~~~ ./sapi/cli/php -v ~~~ -v參數表示輸出版本號,如果命令執行完后看到輸出php版本信息則說明編譯成功。如果是make install的話可以執行$prefix/bin/php這個路徑的php。當然如果是安裝在系統目錄或者你的prefix目錄在$PATH環境變量里的話,直接執行php就行了。 > 在只進行`make`而不`make install`時,只是編譯為可執行二進制文件,所以在終端下執行的php-cli所在路徑就是`php-src/sapi/cli/php`。 后續的學習中可能會需要重復configure make 或者 make && make install 這幾個步驟。 ## Windows環境的編譯 Windows環境下的編譯可以參考官方Wiki的說明:[https://wiki.php.net/internals/windows/stepbystepbuild](https://wiki.php.net/internals/windows/stepbystepbuild) ## 推薦書籍和參考 - [Gnu Make中文書冊](http://www.yayu.org/book/gnu_make/index.html) - 《Autotools A Practioner's Guide》
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看