私のautodeployスクリプトに奇妙な問題があります。nginx/php-fpm execによって呼び出されたときにnpmが実行されない
基本的にはhttpでトリガーされたときにnpm install
とnpm run build
のようないくつかのコマンドで他のシェルスクリプトを実行するphpスクリプトです。これは、PHPのスクリプトがhttp nginx/php-fpmから呼び出された場合を除いてすべて動作します。この場合のnpmコマンドは実行されません。
私はこの問題を示すために、簡単な例レポを作成しました:https://github.com/Kasheftin/npm-bug
私達はちょうどtest.shシェルコマンドを実行しますtest.phpを持っている:私たちはちょうどnpm run test
を実行test.shを持って
<?php
exec("/home/www/tests/npm-bug/test.sh > /home/www/tests/npm-bug/test.log");
をコマンド:最後に、我々は、以下のコマンドでpackage.jsonいる
#!/bin/bash
cd /home/www/tests/npm-bug
npm run test
:
"scripts": {
"test": "echo \"Hello World!\""
}
npm run test
の結果は次のようになります。
> [email protected] test /home/www/tests/npm-bug
> echo "Hello World!"
Hello World!
お知らせ最後の行 - それはpackage.jsonでechoコマンドの結果です。 ./test.sh
コマンドの場合も同じ結果が表示されます。 php test.php
コマンドを実行した後には、同じことがtest.log
に入ります。
しかし、私は、HTTPからtest.phpををトリガーするとき、私は最後の文字列が存在しないことのみ
> [email protected] test /home/www/tests/npm-bug
> echo "Hello World!"
お知らせを、得る、NPMコマンドが実行されませんでした。
また、私は私のnginxの中に、この場所のルールを持っている:これはすべての非常にスタンダールのようだ、nginxのとphp7.0-FPMは、箱から出してすぐです
location = /npm-test {
root /home/www/tests/npm-bug;
rewrite ^(.*)$ /test.php break;
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
、PHPの設定は全く同じですcliとfpmのために。環境の異なる2台のサーバーでチェックされています。
あなたは、今日の私のスーパーヒーローです、おかげでたくさんの作品! – Kasheftin