Понимание установки библиотеки PHP - PullRequest
18 голосов
/ 09 декабря 2010

Я пытаюсь понять параметры и терминологию, относящуюся к "установке" библиотек PHP в системе (Linux / OSX)

Вот некоторые конкретные моменты, которые я пытаюсь охватить:

  1. Что означает «установка» применительно к библиотекам PHP?
  2. В чем разница между библиотеками и расширениями?
  3. Как вписывается php.ini?
  4. Как вписывается PEAR?
  5. Как импортировать / включать библиотеки?
  6. Если я создаю свою собственную библиотеку, каков наилучший способ ее упаковки и распространения?

Спасибо - и извините за несколько частей ...

Ответы [ 2 ]

13 голосов
/ 09 декабря 2010

пара очков ...

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 Framework
  2. CakePHP
  3. Codeigniter
  4. http://www.phpframeworks.com/
  5. Etc ...

(не в любом порядке, только те, которые приходили на ум)

При условии, что вы использовали стандартный подход использования RPM или аналогичных программ для управления скомпилированными аспектами PHP и расширениями, тогда хорошая надежная среда позаботится о включении всего необходимого вам дополнительного кода библиотеки PHP. *

Конечный результат заключается в том, что вы сосредоточены на поставке продукта, а не на всей инфраструктуре, которую в противном случае вам пришлось бы изучать и изобретать.

-
php.ini анализируется и запускается при запуске PHP (каждый раз для командной строки, один раз для запуска сервера в apache). Он определяет множество настроек, включает в себя множество модулей, настраивает эти модули и т. Д ...

Вы можете переопределить некоторые настройки в php.ini с помощью функции ini_set () в PHP. Однако это эффективно только для некоторых настроек. Другие должны быть установлены до запуска вашего скрипта.

При работе под 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 с хорошим сайтом будет достаточно.

-
Может быть, немного бессвязно, но я надеюсь, что это направит вас в правильном направлении.

4 голосов
/ 09 декабря 2010

Все напрямую связано с PHP:

  1. Обычно просто копируют и проверяют что-то, что хочет его использовать, знает, где оно находится.
  2. Расширение обычно пишется на C и загружается интерпретатором, тогда как библиотека обычно означает нативную библиотеку PHP.
  3. Не знаю, что вы хотите знать здесь. INI загружает расширения и устанавливает некоторые параметры. Он не связан напрямую с установками .... Вы можете настроить свой include-путь (или что-то еще) здесь.
  4. Вы можете установить библиотеки с ним;) Не знаю, что вы хотите знать.
  5. обычно require(_once) или include(_once). Для занятий вы можете настроить автозагрузчик. Обратитесь к руководству по PHP.
  6. package / Archive (zip, gz, tarball, ..) это и сделать ссылку для скачивания? Также: Не знаю, чего ты хочешь.

Если вы хотите писать библиотеки PHP и хотите иметь простой способ упаковки и распространения, взгляните на PEAR.

...