1

Symfony 2 コマンドを実行するように Heroku のスケジューラを構成しました。

bash app/console myapp:send:confirmations --verbose

10分ごとに実行するように設定します。

しかし、ログには次のメッセージが表示されます。

2015-09-10T13:01:25.313711+00:00 heroku[api]: Starting process with command `bash app/console myapp:send:confirmations` by scheduler@addons.heroku.com
2015-09-10T13:01:44.151426+00:00 heroku[scheduler.7629]: Starting process with command `bash app/console myapp:send:confirmations --verbose`
2015-09-10T13:01:44.811500+00:00 heroku[scheduler.7629]: State changed from starting to up
2015-09-10T13:01:45.565021+00:00 app[scheduler.7629]: app/console: line 2: ?php: No such file or directory
2015-09-10T13:01:45.565093+00:00 app[scheduler.7629]: app/console: line 19: unexpected EOF while looking for matching `''
2015-09-10T13:01:45.565096+00:00 app[scheduler.7629]: app/console: line 28: syntax error: unexpected end of file
2015-09-10T13:01:46.291606+00:00 heroku[scheduler.7629]: State changed from up to complete
2015-09-10T13:01:46.278800+00:00 heroku[scheduler.7629]: Process exited with status 2

これらは、私を混乱させている関連する3つです。

2015-09-10T13:01:45.565021+00:00 app[scheduler.7629]: app/console: line 2: ?php: No such file or directory
2015-09-10T13:01:45.565093+00:00 app[scheduler.7629]: app/console: line 19: unexpected EOF while looking for matching `''
2015-09-10T13:01:45.565096+00:00 app[scheduler.7629]: app/console: line 28: syntax error: unexpected end of file

私は少し混乱しています: ファイルapp/consoleは存在しないようですが、スクリプトは予期しない EOF に遭遇し (ただし、ファイルは存在しません oO)、予期しないファイルの終わりに遭遇します (これはメッセージ immediatley と同じではありませんか?前?

私は何を間違っていますか?

4

1 に答える 1

1

コンソールを起動するphp代わりに使用します。bash

php app/console myapp:send:confirmations --verbose

Ubuntu 15.04 でも同じ動作 (クラッシュ) があります。

$ bash app/console
app/console: line 2: ?php: No such file or directory
app/console: line 18: unexpected EOF while looking for matching `''
app/console: line 23: syntax error: unexpected end of file
$ php app/console -v
Symfony version 2.7.4 - app/prod
...

の先頭からのシバンapp/consoleが無視され、PHP インタープリターが呼び出されないようです。

#!/usr/bin/env php
<?php
....

Aaron Copleyからの説明は次のとおりです。

実行可能ではありません

絶対パスまたは相対パスでバイナリを実行する

したがって、ファイルを実行可能としてマークし、相対パスでスクリプトを起動すると、PHP インタープリターが呼び出されます。

$ chmod +x app/console
$ ./app/console -v
Symfony version 2.7.4 - app/prod
于 2015-09-10T13:29:14.200 に答える