Проблема с Proc_open и Capifony

Я пытаюсь использовать Capifony с моим веб-приложением в Symfony2.1, чтобы ускорить процесс развертывания.

Вот мой файл deploy.rb:

default_run_options[:pty] = true
set :application, "mywebsite"
set :domain,      "mywebsite.com"
set :deploy_to,   "~/git/mywebsite.git"
set :app_path,    "app"

set :repository,  "[email protected]:myname/mywebsite.git"
set :scm,         :git
# Or: `accurev`, `bzr`, `cvs`, `darcs`, `subversion`, `mercurial`, `perforce`, or `none`
set :user, "myserveruser"  # The server's user for deploys


set :model_manager, "doctrine"
# Or: `propel`

role :web,        domain                         # Your HTTP server, Apache/etc
role :app,        domain                         # This may be the same as your `Web` server
role :db,         domain, :primary => true       # This is where Symfony2 migrations will run

set :use_composer, true
set :update_vendors, true


set :use_sudo,      false
set :keep_releases,  3
set :shared_files,      ["app/config/parameters.yml"]
set :shared_children,   [app_path + "/logs", web_path + "/uploads"]

set :deploy_via, :rsync_with_remote_cache
set :ssh_options, { :forward_agent => true }
ssh_options[:keys] = %w(/.ssh/id_rsa)
ssh_options[:port] = xxxx


# Be more verbose by uncommenting the following line
logger.level = Logger::MAX_LEVEL

И вот моя ошибка:

 The Process class relies on proc_open, which is not available on your PHP installation.

когда скрипт запускается php composer.phar update

более подробная информация здесь: http://pastebin.com/hNJaMvwf

Но я нахожусь на виртуальном хостинге, и мой хостер сказал мне, что я не могу включить proc_open, но есть ли способ заставить его работать?

Спасибо большое за вашу помощь !


person Reveclair    schedule 19.03.2013    source источник


Ответы (2)


Composer должен иметь возможность запускать процессы командной строки (он делает это с помощью компонента symfony/process). Невозможно запустить Composer, если ваш хост не поддерживает proc_open.

В качестве альтернативной стратегии развертывания вы можете вручную загрузить каталог vendor/ на рабочую машину (вы можете использовать функция загрузки в вашем рецепте Capistrano). Тем не менее, виртуальные серверы в наши дни доступны по цене, и я бы все равно не рекомендовал развертывать приложения Symfony2 на виртуальном хостинге. Может быть, вам стоит поискать другое решение для хостинга?

person Gerry    schedule 19.03.2013

Я также столкнулся с похожей (но другой) проблемой с моим веб-хостом при использовании Composer для установки расширения Sematic для моей установки Mediawiki. Я не использовал Cafinony, но использовал Putty и SSH для запуска Composer в «удаленной» командной строке. Произошел сбой Composer с той же ошибкой;

Класс Process использует proc_open, которого нет в вашей установке PHP.

Однако я смог исправить это другим способом.

proc_open — это функция PHP, которая обычно «отключена» большинством веб-хостов. Она отключается путем включения функции в список отключенных функций, который устанавливается с помощью параметра конфигурации PHP, disable_functions. Другими словами, если она включена в list он отключен, если он удален из списка, он включен.

Таким образом, вы можете эффективно включить proc_open «на лету», используя параметр командной строки php -d для удаления отключенных функций (включая proc_open). Другими словами, удалив список disable_functions, вы фактически «включите все» функции, включая proc _pen.

Чтобы использовать -d для включения proc_open, вы должны установить для параметра disable_functions пустую строку. Это удалит весь список отключенных функций (включая proc_open)

При установке из командной строки с помощью SSH-клиента, такого как Putty, используйте команду, подобную этой:

php -f composer.phar -d detect_unicode=Off -d disable_functions= требуют mediawiki/semantic-media-wiki "1.9.*,>=1.9.0.1"

Итак, если вы сможете найти способ передать «-d settings» с вашим файлом ruby, вы сможете решить свою проблему.

Я знаю, что это не полностью решит вашу проблему, но может помочь другим преодолеть надоедливые настройки php по умолчанию на общих серверах, которые мешают Composer!

Я надеюсь, что это поможет кому-то.

person Rohan Thomas    schedule 19.01.2014