• ベストアンサー

osxのWEBサーバでアプリをcgiから実行させたい

OSX server 1.3上で公開しているcgiを外部からアクセスした時に、cgiからパラメータを渡してインストール済のアプリを起動させたいのですが、こういう事は出来る物なのでしょうか? cgiのなかで system('/Applications/Firefox.app www.yahoo.co.jp'); などといった感じにです。 「戻り値/アプリの終了」などはなくても結構です。実行だけさせたいです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

coralというのはこれですね(http://hmdt-web.net/coral/) perlをお使いのようなので、CGIモジュールでも使ってformのパラメータさえ取得できればあとはsystemコマンドで起動してやればできそうな気がします。 #!/usr/bin/perl use CGI; $coral = /[path]/[to]/coral; $q = new CGI; my $URL = $q->param('URL'); my $NAME = $q->param('name'); system("$coral -o $NAME $URL"); というスクリプトを作って、 http://your_host_name.com/coral.cgi?URL=www.apple.com&name=apple.png でアクセスすればよいのではないかと(未検証)。 書き出しディレクトリやコマンド自体のパーミッション(apacheの設定含む)には注意が必要です。 ※coralを使ったことがないのであてずっぽうです。

safina_lastear
質問者

補足

サンプルコードまで、ありがとうございます。 あれからlowrider_2005さんと同じようなコードを作成し実行させてみましたが、画像生成はされませんでした。 $coral = './coral1.2/coral'; $URL = 'http://www.apple.com'; #テストのため固定 $NAME = 'apple.jpg'; #テストのため固定 system("$coral -o $NAME $URL"); CGIは /OSXユーザー/Sites/ に、 coral1.2フォルダは /OSXユーザー/Sites/coral1.2/ に、 (coral1.2フォルダのパーミッションは777です。) それぞれ置いてあります。 OSXのApacheもまだ設定をみていないので当然かもしれませんが、この方法も見当違いではないという自信(?)も得ましたので、今後Apache等の設定を見ていくつもりです。 アドバイスありがとうございました。

その他の回答 (1)

回答No.1

方法はあると思いますが、何のために? cgiは通常、httpdの設定で指定したユーザでしかコマンドを動かせません。 cgiから(たとえば)Firefoxを起動させたとしても、ログイン中の画面にFirefoxが開くわけではありませんよ。 SuExecなどの方法がありますが、どんな方法なら可能か(または不可能か)は目的によりけりです。

safina_lastear
質問者

補足

回答ありがとうございます。 このような質問をした目的ですが、coralという、指定したサイトを画像化して保存してくれるアプリがありまして、そのアプリにCGIからサイトアドレスを渡して起動させ、画像を保存させたいのです。 このアプリはTerminalで起動し、一切のウインドウは表示しないのでコマンドを渡せさえすればいいかと思っています。 同じようなサイトのサムネイルサービスはあるのですが、会社のサイトの一部として画像を利用する訳にも行かず(相手側サーバーの負担が増大する等)、さしあたっての策として自社内にあるOSXサーバーを利用しようと思った次第です。 ならローカルでサイトを画像化してUPすれば?と言う事になりますが、サイトの更新担当も一人ではなく、いつなんどき更新されるか分からないので、自動でサムネイルするこの方法を模索しています。 なお、windowsサーバーは社内にありませんので、ネット上で公開されている「サムネイル化のためのサーバー構築」が出来ません。。。 なんとかOSXサーバーで動かしたいので、よろしくお願いします。 (OSXサーバーは私の管理の範疇にあるので自由に設定が可能です。)

関連するQ&A