0

デプロイメントプロセスを加速するために、Symfony2.1のWebアプリで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,  "git@github.com: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を有効にできないと言われましたが、それを機能させる方法はありますか?

あなたの助けをどうもありがとう!

4

2 に答える 2

2

Composer はコマンドラインプロセスを実行できる必要があります (これは symfony/process コンポーネントを使用して実行します)。ホストが proc_open をサポートしていない場合、Composer を実行する方法はありません。

別のデプロイ戦略として、vendor/ディレクトリを手動で本番マシンにアップロードできます (Capistrano レシピでアップロード機能を使用できます)。とはいえ、最近では仮想サーバーは手頃な価格で提供されており、Symfony2 アプリケーションを共有ホスティングにデプロイすることはお勧めしません。別のホスティング ソリューションを探す必要があるのではないでしょうか?

于 2013-03-19T15:02:33.433 に答える
1

また、Composer を使用して Mediawiki インストール用の Sematic 拡張機能をインストールしているときに、Web ホストで同様の (ただし異なる) 問題に遭遇しました。私は Cafinony を使用していませんでしたが、Putty と SSH を使用して「リモート」コマンド ラインで Composer を実行していました。Composer は同じエラーで失敗しました。

Process クラスは、PHP インストールでは使用できない proc_open に依存しています。

ただし、別の方法で修正できました。

proc_open は、通常、ほとんどの Web ホストで「無効」にされている PHP 関数です。PHP 構成設定 disable_functions で設定された無効な関数のリストに関数を含めることによって無効にされます。リストから削除すると有効になり、リストから削除すると有効になります。

したがって、php コマンド ラインの -d オプションを使用して無効な関数 (proc_open を含む) を削除することにより、proc_open を「その場で」効果的に有効にすることができます。つまり、disable_functions のリストを削除することで、proc _pen を含むすべての関数を効果的に「有効にする」ことができます。

-d を使用して proc_open を有効にするには、disable_functions 設定を空の文字列に設定する必要があります。これにより、無効な関数のリストがすべて削除されます (proc_open を含む)。

Putty などの SSH クライアントを使用してコマンド ラインでインストールする場合は、次のようなコマンドを使用します。

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

そのため、Ruby ファイルで「-d 設定」を渡す方法を見つけることができれば、問題を解決できる可能性があります。

これで問題が完全に解決されないことは承知していますが、Composer の邪魔になる共有サーバー上の厄介なデフォルトの php 設定を克服するのに役立つかもしれません。

これが誰かに役立つことを願っています。

于 2014-01-19T11:15:03.237 に答える