【问题标题】:Understanding PHP library installation了解 PHP 库安装
【发布时间】:2011-05-23 01:28:54
【问题描述】:

我正在尝试了解与在系统(Linux/OSX)上“安装”PHP 库相关的选项和术语

以下是我试图涵盖的一些具体要点:

  1. 在涉及 PHP 库时,“安装”是什么意思?
  2. 库和扩展有什么区别?
  3. php.ini 如何适应?
  4. PEAR 如何适应?
  5. 如何导入/包含库?
  6. 如果我创建自己的库,打包和分发它的最佳方式是什么?

感谢和抱歉多部分...

【问题讨论】:

标签: php installation pear


【解决方案1】:

几点...

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. 代码点火器
  4. http://www.phpframeworks.com/
  5. 等等……

(不按任何顺序,只是想到的)

如果您已采用标准方法使用 RPM 或类似方法来管理 PHP 和扩展方面的编译,那么一个良好的可靠框架将负责包含您需要的所有其他 PHP 库代码。

最终结果是,您专注于交付产品,而不是您必须学习和发明的所有基础架构。

--
php.ini 在 PHP 启动时被解析并运行(每次命令行,每个服务器在 apache 中启动一次)。它定义了很多设置,包含了很多模块,配置了这些模块等等......

您实际上可以使用 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 文件就足够了。

--
也许有点漫无边际,但我希望这能为您指明正确的方向。

【讨论】:

    【解决方案2】:

    所有与PHP直接相关的:

    1. 通常只是复制并确保想要使用它的东西知道它在哪里。
    2. 扩展通常用 C 编写并由解释器加载,而库通常意味着原生 PHP 库。
    3. 不知道,你想知道什么。 ini 加载扩展并设置一些设置。它与安装没有直接关联,...。您可以在此处设置包含路径(或其他内容)。
    4. 您可以使用它安装库;) 也不知道,您想知道什么。
    5. 通常是require(_once)include(_once)。对于类,您可以设置自动加载器。请参阅 PHP 手册。
    6. 打包/存档(zip,gz,tarball,..)它并制作下载链接?另外:不知道,你想要什么。

    如果你想编写 PHP 库并想要一种简单的打包和分发方式,那就看看 PEAR。

    【讨论】:

    • 谢谢,但您能否解释一下为什么 PEAR 比“打包 .. 并制作下载链接”更简单?
    • 用pear安装有两行:pear channel-discover mychannel.example.compear install mychannel.example.com/MyPackage。如果您没有频道服务器(谷歌为 pearfarm ;)),那么您还可以提供可下载的软件包。安装类似于pear install MyPackage-x.y.z.tgz(x.y.z 取决于包文件的版本)。要创建包,您必须编写一个package.xml(谷歌为“pear package.xml”;)),但是当它存在时,它只是一个简短的pear package 来创建一个新包,然后您可以将其上传到您的主机,或频道服务器。
    猜你喜欢
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-04
    相关资源
    最近更新 更多