2013-03-19 4 views
0

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

Вот мой 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, есть ли способ заставить его работать?

Большое спасибо за помощь!

ответ

2

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

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

1

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

Класс процесса основан на proc_open, который недоступен при установке PHP.

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

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

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

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

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

PHP -f composer.phar -d detect_unicode = Off -d disable_functions = require mediawiki/semantic-media-wiki "1.9. *,> = 1.9.0.1"

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^