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

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

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

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

gulp

gulpは、Node.jsをベースとしたタスク自動化ツールの一つ。ストリームでファイルを処理することが特徴です。CSSプリプロセッサの使用時のコンパイルや、CSS・JavaScriptファイルの圧縮・結合などを自動的に行うことができます。

Q&A

解決済

1回答

1158閲覧

gulp4で任意のphpファイルを実行したい

jack1121alpha2

総合スコア14

PHP

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

gulp

gulpは、Node.jsをベースとしたタスク自動化ツールの一つ。ストリームでファイルを処理することが特徴です。CSSプリプロセッサの使用時のコンパイルや、CSS・JavaScriptファイルの圧縮・結合などを自動的に行うことができます。

0グッド

0クリップ

投稿2020/04/25 17:00

表題の通りです。

正統派な使い方ではないとは思うのですが、
htmlを普通に書くのが面倒なので
phpで書いていました。

書いている途中で気付いたのですが
変数とかループとか開発とか修正時には
楽だけど、運用面を考えると動的な動きほとんどないし、
最終的にはhtmlにしたいなと思いつつ、
開発中はphpで書けた方が楽なので、
gulpを使ってhtmlに自動変換することにしました。

ただプラグインであるphp2htmlだと希望の動きをしてくれません。

希望の動きとは
/src/index.php

/dist/index.html

に変換することでそれだけなら上記のプラグインで
問題ないのですが、自分が作っている
index.phpはサブディレクトリにある
phpファイルの内容を拾ってきてincludeする
ようにしていて、そのためサブディレクトリの
ファイルを編集してもindex.phpの記述は
変わらないため、変更なしとgulpに判断されて
変換が発生しません。

で、プラグインを使うことは諦めて
代わりに自作したphpファイル(実行するとphpをhtmlに変換)
を実行しようと思い調べたところ
どうやらchild_processを使えば任意のコマンドを実行できる
ところまではわかりました。

検索するとサンプルはいくつか見つかったのですが
いずれもgulp4以前のものでgulp4に対応した書き方の
サンプルがわかりませんでした。

一応stackoverflowでそれっぽいものを見つけて
書いてみたのが以下の内容になります。

なお自作のphpファイル自体は動いていて、gulpで実行するとエラーになります。

gulp

1const {exec} = require('child_process'); 2const php = exec('php',['src/generate.php']); 3function execPhpToHtml(done) { 4 exec(php, function (err, stdout, stderr) { 5 console.log(stdout); 6 console.log(stderr); 7 done(err); 8 }); 9} 10exports.phptohtml = execPhpToHtml;

エラー内容↓

TypeError [ERR_INVALID_ARG_TYPE]: The "file" argument must be of type string. Received an instance of ChildProcess

多分すごい初歩的なところでつまづいているんだろうなとは
思うのですが、どうにも分からず、お手数ですがご存知の方がいらっしゃいましたら
お力をお借りできれば幸いです。

※今は自作のphpファイルを実行する方向で考えていますが、
プラグインの設定など別の方法で目的を達成できればそれはそれで良いかなと思っています。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2020/04/26 03:31 編集

ご希望の回答ではないと思うのでこちらに書こうと思います。 >htmlを普通に書くのが面倒なので こういう場合に使われる事が多いのは、 pug、ejs、handlebars等のJavaScriptテンプレートエンジンで、 それらはHTMLへのコンパイルを前提としていて、 サブディレクトリのファイルをincludeしたりPHPのような変数、ループの様な機能も使えます。 >正統派な使い方ではないとは思うのですが、 とご理解されている様に、 多く採用されている方法ではないと思うので、PHPという縛りがなければJavaScriptテンプレートエンジンの採用を検討されるのも1つの方法かと思いました。
jack1121alpha2

2020/04/25 19:32

ご回答ありがとうございます。実は今回ejsの導入は検討したのですが、今まで作り込んできたいわゆるオレオレフレームワーク的なものがあったので、それをそのまま流用できたらいいなーと思っていました。 確かにご指摘の通りphpに拘らなければejsで自分のやりたいことは実現できるので、改めてejsの導入を検討してみようと思います。
退会済みユーザー

退会済みユーザー

2020/04/26 03:30

そういうことでしたか。 ejsを検討されるとのことで、上手くいくことを祈っています^^
guest

回答1

0

自己解決

@Lishさんからご提案いただいたejsを導入しようと思います。

投稿2020/04/25 19:34

jack1121alpha2

総合スコア14

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問