2017-03-01 23 views
0

gulpをコンパイルするためにシェルコマンドを実行しようとしています。PHPドキュメントから "npm start"を実行しますか?

私は通常実行します。

cd 
cd /var/www/html/ 
npm uninstall gulp --save 
npm install gulp --save 

npm start 
をしてゴクゴクファイルがうまくコンパイルされます。

私は基本的にPHPのドキュメントからNPM startコマンドを実行している(ゴクゴクファイルをコンパイルする方法をtheresのかどうかを知る必要があり

$output = shell_exec('./compileNpmStart.sh'); 

// display $output 
echo $output; 

これはコンパイルするように見えるが、ん。

をコンパイルした後、私。あなたは、ファイルに実行するスクリプト、例えばcompile.shを保存することによって。

0 info it worked if it ends with ok 
1 verbose cli [ '/usr/bin/nodejs', '/usr/bin/npm', 'start' ] 
2 info using [email protected] 
3 info using [email protected] 
4 verbose run-script [ 'prestart', 'start', 'poststart' ] 
5 info lifecycle [email protected]~prestart: [email protected] 
6 warn lifecycle npm is using /usr/bin/nodejs but there is no node binary in the current PATH. Use the `--scripts-prepend-node-path` option to include the path for the node binary npm was executed with. 
7 silly lifecycle [email protected]~prestart: no script for prestart, continuing 
8 info lifecycle [email protected]~start: [email protected] 
9 verbose lifecycle [email protected]~start: unsafe-perm in lifecycle true 
10 verbose lifecycle [email protected]~start: PATH: /usr/lib/node_modules/npm/bin/node-gyp-bin:/var/www/html/node_modules/.bin 
11 verbose lifecycle [email protected]~start: CWD: /var/www/html 
12 silly lifecycle [email protected]~start: Args: [ '-c', 'gulp serve' ] 
13 info lifecycle [email protected]~start: Failed to exec start script 
14 verbose stack Error: [email protected] start: `gulp serve` 
14 verbose stack spawn sh ENOENT 
14 verbose stack  at exports._errnoException (util.js:1023:11) 
14 verbose stack  at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32) 
14 verbose stack  at onErrorNT (internal/child_process.js:359:16) 
14 verbose stack  at _combinedTickCallback (internal/process/next_tick.js:74:11) 
14 verbose stack  at process._tickCallback (internal/process/next_tick.js:98:9) 
15 verbose pkgid [email protected] 
16 verbose cwd /var/www/html 
17 error Linux 4.8.6-x86_64-linode78 
18 error argv "/usr/bin/nodejs" "/usr/bin/npm" "start" 
19 error node v7.5.0 
20 error npm v4.1.2 
21 error file sh 
22 error path sh 
23 error code ELIFECYCLE 
24 error errno ENOENT 
25 error syscall spawn sh 
26 error [email protected] start: `gulp serve` 
26 error spawn sh ENOENT 
27 error Failed at the [email protected] start script 'gulp serve'. 
27 error Make sure you have the latest version of node.js and npm installed. 
27 error If you do, this is most likely a problem with the base-prep package, 
27 error not with npm itself. 
27 error Tell the author that this fails on your system: 
27 error  gulp serve 
27 error You can get information on how to open an issue for this project with: 
27 error  npm bugs base-prep 
27 error Or if that isn't available, you can get their info via: 
27 error  npm owner ls base-prep 
27 error There is likely additional logging output above. 
28 verbose exit [ 1, true ] 
+0

ルックアップshell_exec – Dimi

+0

私はshell_exec、System()、exec()などを試してみましたが、そのうちのいくつかは動作していません。私はある種類の許可エラーがあるかもしれないと思う。 webconsole.phpのインストールを試して、ウェブベースのhttp://web-console.org/端末からコマンドを実行してください。権限エラーが発生しました。 –

+0

SUIDでシェルスクリプトを作成して実行しようとしましたか? – Dimi

答えて

1

スタートを代わりに正しいコンパイルのログファイルを持っスクリプト番目を与えます正しい実行許可。 chmod 755 compile.sh

次に、あなたのPHPスクリプトで、次の行を追加します。

<?php 
// allow script to run for up to 10 minutes 
set_time_limit(600); // seconds 

// output of script will be saved in $output 
$output = shell_exec('./compile.sh'); 

// display $output 
echo $output; 

あなたがPHPを使用してスクリプトを実行するためにこれは十分なはずです。

npmと絶対パスを使用する任意のディレクトリを参照する必要がある場合があります。コマンドラインでwhich npmを実行し、使用する完全なパスを取得します。コマンドラインでスクリプトを実行して、スクリプトが正常に動作することを確認します。

+0

これを試してみてください。スクリプトを実行しているように見えますが、サーバファイルには何の効果もありません。 –

+0

shのスクリプト –

+0

を持つcompile.shファイルのファイルアクセス権は777です。コマンドラインから '。/ compile.sh'を手動で実行し、スクリプト自体にエラーがないことを確認してください。 'npm'を絶対パスとして参照する必要があるかもしれません。 –

関連する問題