web上でcsvファイルをアップロードし、embulkというツールを使ってdbに保存するというwebアプリケーションを現在作っています。
以下が問題の部分です。
php
1$embulkShell = "embulk run " . APPLICATION_PATH . "/../data/upload/config.yml"; 2$output = shell_exec($embulkShell . ' 2>&1'); 3echo $output;
アップロード後、上記のembulkコマンドをたたくと以下のエラーになります。
php
1sh: embulk: command not found
パスは以下のように通っているのですが、うまくいきません。
php
1echo get_include_path(); 2 3出力結果 4/home/ec2-user/work/uploader/application/../library:/home/ec2-user/work/uploader/library:/home/ec2-user/work/uploader/embulk/bin:.:/usr/share/php:/usr/share/pear
以下のように絶対パスで実行すれば動きそうなのですがrunコマンドで別のembulkコマンドを呼び出しており、結局そこで"command not found"になってしまうのでパスを通して実行したいです。
php
1$embulkShell = "/home/ec2-user/work/uploader/embulk/bin/embulk run " . APPLICATION_PATH . "/../data/upload/config.yml";
実行権限は付与しています。
bash
1chmod +x /home/ec2-user/work/uploader/embulk/bin/embulk
また、サーバー側で直接コマンドをたたくと実行できたので、クライアントで行う際に問題があると思われます。
どうかご教授お願いいたします。
環境
Linux version 4.1.10-17.31.amzn1.x86_64
Apache/2.2.31 (Unix)
PHP 5.3.29
ZendFramework 1.12.17
Embulk v0.8.2
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/12 09:41
2016/02/12 09:52
2016/02/13 05:31