質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

2回答

1534閲覧

Laravelで外部アプリケーションを実行する際にアプリケーションを置く場所

gobindar

総合スコア51

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

1クリップ

投稿2019/01/10 02:52

いつもお世話になっております。

やりたいこと

Laravelを使用したphpにて、
アプリケーション"LibreOffice"を使用したいです。

課題

下記の実行コードにてLibreofficeのコマンドを実行すると、
dd($ret)で「127」と出力されます。
調べたところ、「127」はLibreOfficeがない(プロジェクト内に存在しない?)
ということという記述がネット上にあり、表題の質問とさせていただいております。
現在は、app/LibreOffice/LibreOffice.app
に格納しております。

実行コード

php

1$office2pdf_cmd = str_replace( array("[SRCFILE]", "[DSTDIR]"), 2 array($srcfile, $dstdir), 3 configODF::OFFICE2PDF_CMD) ; 4exec($office2pdf_cmd, $output, $ret);

実行コードによって呼び出されるconfigODF.php

php

1class configODF { 2 // OfficeをPDFに変換する、Libreofficeのコマンド 3 // [SRCFILE] が、実際のファイル名に置換される。 4 // [DSTDIR] が、実際の出力先ディレクトリに置換される。 5 const OFFICE2PDF_CMD = "libreoffice --headless --nologo --nofirststartwizard --convert-to pdf [SRCFILE] --outdir [DSTDIR]" ; 6}

何卒、宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2019/01/10 03:33

libreoffice のあるディレクトリを付加して、フルパスで指定するとどうなりますか?
guest

回答2

0

ベストアンサー

本当に環境を書かないと他人には何も分からない。
LibreOffice.appからMacと予想するしかない。
LibreOffice.appとlibreofficeが違うんだから当然動かない。
.appはファイルに見えても実体はフォルダ。
「パッケージの内容を表示」すれば中身が分かる。
おそらくこの中にcli用のファイルがあるけど検索したらすぐ分かった。

/Applications/LibreOffice.app/Contents/MacOS/soffice

まずLibreOfficeは普通にアプリケーションにインストール。

Laravel側ではpathは.envに書く。Macでしか動かさないわけないし。

LIBRE_PATH=/Applications/LibreOffice.app/Contents/MacOS/soffice

config/libre.php

<?php return [ "path" => env('LIBRE_PATH'); ];

使う所で

$path = config('libre.path');

Linuxのサーバー上で動かす時は.envで設定。

LIBRE_PATH=soffice

ついで

execよりSymfonyのProcess使ったほうがいい。
https://symfony.com/doc/current/components/process.html

投稿2019/01/10 03:53

kawax

総合スコア10377

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/01/10 03:55

> LibreOffice.appからMacと予想するしかない。 どうりでピンとこなかったわけです。私のほうはWindows前提で考えてました。
gobindar

2019/01/10 10:45

kawax様、以前も私の別の質問にご回答頂いたかと存じます。 大変有り難いです。 今回も、ご教示の方法で解決致しました。 また、単純に質問の回答として場所のお答えをいただくだけでなく、 この場合普通はパスをenvに書く、など、今回私がやりたいことを 達成する上で必要な情報を網羅的にご教示頂き、大変感謝しております。 ご指摘の環境に関しては、次回ご質問から必ず記載するように致します。 「ついで」でご教示頂きました部分に関しましても、 大変有り難いアドバイスなのですが、 「execをSymfonyのProcessを使用」 するのは、下記にありますように、 「標準出力(stdout)と標準エラー出力(stderr)をうまく制御して出力を取得するのは、実はなかなか面倒」 だからでしょうか? そもそもプログラムの実行自体が初めての私にとって、 なかなか違いが理解できず、もし可能でしたら簡単で構いませんので、 ご教示頂けませんでしょうか…? https://cho-phper.hateblo.jp/entry/2015/11/09/003541 おこがましいご質問で申し訳ありません。 お忙しいようであれば大丈夫です。 この度は、ご丁寧な回答大変有り難うございました。
guest

0

どこに置いても良いですが、実行exeへのパスをきちんと指定してあげる必要があるように思います。

app配下であればapp_path()で指定してあげると確実ですね。

投稿2019/01/10 03:00

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問