Статьи

Установка расширений PHP на Nitrous.io

Вдохновленный комментарием к моей предыдущей статье , я понял, что Nitrous все еще слишком сложен для правильной настройки. В этом руководстве мы познакомимся с установкой cURL и Phalcon на PHP-коробку Nitrous.io.

cURL — это встроенная библиотека PHP, которая часто устанавливается вместе с PHP. Он включен в исходный код PHP, но во время установки необходимо передать флаг в PHP, чтобы включить и активировать cURL. Phalcon — это высокопроизводительная среда MVC на основе C. Мы писали об этом раньше . Phalcon является сторонним расширением и, следовательно, не входит в состав PHP.

Начиная

Чтобы начать работать с PHP-боксом Nitrous.io, см. Мою предыдущую статью . После начальной короткой процедуры (вы можете пропустить весь бизнес Composer и Laravel) у вас будет установлен PHP, но без необходимых нам расширений. Чтобы убедиться, что cURL отсутствует, попробуйте добавить следующее содержимое в файл index.php в папке www по умолчанию:

 <? php echo "Curl is"   .   (( function_exists ( 'curl_version' ))   ?   ""   :   " not" )   .   " installed" ; 

Предварительный просмотр в браузере по умолчанию порта 3000 покажет, что cURL, очевидно, не установлен. Однако он установлен для всей системы. Вы можете проверить это, просто проверив версию в консоли и получив следующий вывод:

Таким образом, нам нужно только расширение PHP, чтобы иметь возможность использовать его. Обычно расширение PHP cURL устанавливается вместе с PHP с флагом --with-curl[=DIR] при выполнении команды configure . В других случаях его легко установить, вызвав что-то простое, например, sudo apt-get install php5-curl . Однако в нашем случае ни один из этих аппрейсов не сработает. Первое не может быть достигнуто, потому что PHP уже установлен, и исходный код больше не находится на компьютере, а второе недоступно для нас, потому что у нас нет доступа sudo.

Далее мы будем собирать cURL из исходного кода PHP и вручную добавлять его в нашу конфигурацию.

Загрузка исходного кода PHP

Если мы проверим версию PHP на Nitrous.io в данный момент, то это 5.5.8. Последняя версия PHP, однако, 5.5.9. Чтобы избежать возможных проблем с несовместимостью, мы клонируем точную версию, для которой мы создаем расширение.

Просмотрите старые архивы и выберите подходящую версию. Когда вы найдете нужную ссылку, сделайте следующее (обратите внимание, что каталог инструментов должен существовать, если вы следовали вместе с последней статьей; если нет, создайте его):

 cd / home / action /. tools wget http :// at1 . php . net / distributions / php - 5.5 . 8.tar . bz2 

Распакуйте архив, запустив tar -xjvf , если вы скачали файл .bz2 , или tar -xzvf если вы скачали .gz . Это создаст папку с тем же именем, что и архив. Теперь у нас есть исходный код PHP для версии 5.5.8.

Создание расширения cURL

Важно отметить, что эта процедура может быть применена к любому расширению, связанному с PHP, которое не было установлено по умолчанию. В этой статье мы используем cURL из-за комментария к предыдущему и из-за того, что это популярное расширение. Войдите в папку расширений исходного кода PHP.

 cd php - 5.5 . 8 / ext 

Все доступные расширения находятся здесь, с их полным исходным кодом. CD в ​​папку curl и выполните процедуру ниже:

 cd curl  /home/action/.parts/bin/phpize ./ configure -- with - curl make make install 

Это создает расширение из исходного кода, помещает файл curl.so в подпапку modules и копирует его в папку расширений PHP в /home/action/.parts/packages/php5/5.5.8/lib/extensions/no-debug-zts-20121212/ .

Активация расширения cURL

Чтобы активировать расширение, все, что нам нужно сделать, это добавить строку в наш php.ini и перезапустить веб-сервер. Активируйте отображение скрытых файлов на панели браузера файлов и перейдите в ~/.parts/etc/php5 . Там отредактируйте файл php.ini : найдите строку «Module Settings», затем над ней добавьте строку extension=curl.so :

Сохраните файл и запустите parts restart apache2 в консоли. Вы можете получить ошибку, говоря что-то вроде

 ( 98 ) Address  already in  use :  AH00072 :  make_sock :  could not bind to address 0.0 . 0.0 : 3000 no listening sockets available ,  shutting down AH00015 :   Unable  to open logs parts :  ERROR :   "/home/action/.parts/packages/apache2/2.4.7/bin/apachectl start"  failed Aborting !                                                                     

Если вы это сделаете, просто запустите ту же команду снова, и она должна работать.

Теперь попробуйте предварительно просмотреть файл index.php с предыдущего порта 3000, и, если все прошло успешно, в сообщении должно быть сказано, что cURL теперь установлен.

Вы можете убедиться в этом, изменив содержимое обратно на phpinfo() и ища раздел cURL:

Загрузка и сборка Phalcon

В соответствии с инструкциями на их веб-сайте мы клонируем репозиторий, а затем создаем расширение.

 cd ~/. tools git clone -- depth = 1  git :// github . com / phalcon / cphalcon . git cd cphalcon / build ./ install 

На последнем этапе мы не нуждаемся в sudo потому что учетная запись action Nitrous-ящики, довольно высока, и имеет разрешения, выходящие за пределы полномочий обычной учетной записи.

Как только компиляция завершится, скрипт сборки Phalcon автоматически phalcon.so файл phalcon.so в папку расширений PHP. Затем вы можете выполнить ту же процедуру, что и выше, чтобы активировать расширение. Введите php.ini и добавьте extension=phalcon.so в смесь, как показано ниже:

Повторная проверка phpinfo() из ранее после запуска parts restart apache2 должен показать Phalcon как установленный:

Вывод

В этом руководстве мы продемонстрировали простоту установки пользовательских расширений PHP на Nitrous.io. Эта процедура может быть применена для установки расширений PHP в любом месте — вам не нужно перестраивать весь исходный код PHP просто, чтобы добавить связанное расширение в смесь. Со временем, по мере роста популярности, Nitrous может добавить более простой способ добавления расширений — возможно, даже через «части», их менеджер пакетов — но сейчас мы застряли в этом ручном процессе. Хотя утомительно, это, конечно, не сложно.

Вы уже играли на Nitrous? Если так, что ты построил? Если нет, то что вам мешает? Дайте нам знать в комментариях ниже!