2010-12-09 37 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文件就足够了。

-
也许有点漫不经心,但我希望这可以指出你的方向是正确的。