2010-12-09 35 views
17

我想了解的選項以及與「安裝」 PHP庫系統上的術語(Linux的/ OSX)瞭解PHP庫安裝

下面是我想討論一些具體問題:

  1. 「安裝」是什麼意思,當涉及到PHP庫?
  2. 庫和擴展之間有什麼區別?
  3. php.ini如何適合?
  4. PEAR如何適應?
  5. 如何導入/包含庫?
  6. 如果我創建了自己的庫,打包和分發它的最佳方法是什麼?

Thanks-和遺憾的多部分...

+1

其中的一些正好在php文檔中:[php.ini](http://www.php.net/manual/en/configuration.file.php),[PECL/PEAR](http:// www.php.net/manual/en/install.pecl.intro.php)。 – eykanal 2010-12-09 18:59:18

回答

4

所有直接關係到PHP:

  1. 通常只是複製並確保東西,想要使用它,知道在哪裏它是。
  2. 擴展通常用C編寫並由解釋器加載,而庫通常表示本地PHP庫。
  3. 不知道,你想知道這裏。 ini加載擴展並設置一些設置。它與安裝沒有直接關聯,....您可以在此設置您的include路徑(或其他)。
  4. 你可以安裝庫;)不知道你想知道什麼。通過require(_once)include(_once)。對於課程,您可以設置自動加載器。請參閱PHP手冊。
  5. 包/存檔(zip,gz,tarball,..)它並做出下載鏈接?另外:不知道,你想要什麼。

如果你想編寫PHP庫,並希望一個簡單的打包和分發方式,比看一下PEAR。

+0

謝謝,但是你能否闡明爲什麼PEAR比簡單的「包裝..並建立下載鏈接」更簡單? – Yarin 2010-12-09 19:03:37

+1

用梨安裝有兩行:`pear channel-discover mychannel.example.com`和`pear install mychannel.example.com/MyPackage`。如果你沒有渠道服務器(google for pearfarm;)),那麼你也可以提供一個可下載的軟件包。比安裝類似​​於`pear install MyPackage-x.y.z.tgz`(x.y.z取決於包文件的版本)。要創建包,你必須寫一個`package.xml`(谷歌爲「pear package.xml」;)),但是當它存在時,它只是一個簡短的`pear package`來創建一個新的包,然後你可以上傳到您的主機或通道服務器。 – KingCrunch 2010-12-09 19:09:46

13

幾個百分點......

PHP沒有本機 「進口」 的基礎設施,比如Python,Java或.NET。有幾種方法可以在PHP中使用這些庫。

  1. 將它們編譯成PHP二進制文件。這是最先進的方式,除非你有非常特殊的需求,否則通常是不可取的。

  2. 將它們作爲PHP模塊安裝在服務器上,並將它們包含在PHP.ini中。從PHP程序員的角度來看,這些擴展是PHP的一部分 - 始終可用。只需添加和刪除它們就可以輕鬆完成,而無需重新構建PHP本身。

  3. 在服務器上安裝PHP代碼,並將其包含到您的PHP腳本中。

  4. 將一個庫的副本保存到您的項目中,並將其包含到您的PHP腳本中。

-
在基本層面,代碼解釋(靜態或動態)的任一部分,或者是普通的舊的PHP代碼可以是包括()編到項目中。

爲了您的目的,我只能建議您堅持使用行業標準的PHP發行版(選擇一個好的linux操作系統,並使用它的PHP)。然後,幾乎所有在解釋器級別需要的庫都可以作爲附加軟件包提供,而複雜性則留給那些每天做這件事的人。

在RedHat/Centos的,你可能會遇到:

yum install php php-memcached php-gd php-pecl

-
對於所有其他類型的圖書館,你可能想使用,這是最有可能最好採取良好的PHP框架爲您照顧所有這一切。

是一些例子:

  1. Zend框架
  2. CakePHP的
  3. http://www.phpframeworks.com/
  4. 等...

(不按任何順序,只是那些想到)

假設您已經採用了使用RPM或類似的標準方法來管理PHP和擴展的編譯方面的問題,那麼一個好的可靠框架將負責包含您需要的所有其他PHP庫代碼。

最終的結果是,您專注於交付產品,而不是您需要學習和發明的所有基礎架構。

-
的php.ini被解析和PHP啓動時(每次命令行中,每個服務器開始曾經在阿帕奇)上運行。它定義了很多設置,包括很多模塊,配置這些模塊等等。

實際上,您可以使用PHP中的ini_set()函數覆蓋php.ini中的一些設置。但是,這隻對某些設置有效。其他需要在腳本啓動之前設置。

在apache下運行時,可以將行添加到.htaccess<VirtualHost>指令中,該指令完全覆蓋該目錄/虛擬主機的PHP.ini。

(請糾正我的語法,如果它是錯誤的刪除此注)

<VirtualHost *> 
    ServerName www.example.com  
    DocumentRoot /home/joe/site/docroot 
    php_value include_path "/home/joe/site/php-code" 
</VirtualHost> 

-
在回答您的#6問題你自己的圖書館和包裝的最佳方式,我建議你首先評估圖書館的需求。如果你真的想做點什麼,那麼找出人們最常用的方法。如果它是一個簡單的庫,那麼一個帶有漂亮網站的.php文件就足夠了。

-
也許有點漫不經心,但我希望這可以指出你的方向是正確的。