2016-05-12 6 views
1

私は1and1でホストされているサーバーを持っており、私はLaravelを使用しています。私は、タスクをスケジュールする職人のコマンドを実行したい場合は、私はこのエラーを取得:ロット検索後Larvel Artisan 1and1サーバーのPHPバージョンエラー

$ php artisan schedule:run 

Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /htdocs/artisan on line 31 

Parse error: syntax error, unexpected T_STRING in /htdocs/artisan on line 31 

を、何も(PHPのエイリアスを行い、その代わり$ php5.5$ phpなどを呼び出す)私の問題を解決していません。

主な問題は、phpを呼び出すと、バージョン4.4.9のPHPが使用され、代わりに5.5がLaravelに必要な点です。

$ php -v 
PHP 4.4.9 (cgi-fcgi) (built: Mar 31 2016 16:41:29) 
Copyright (c) 1997-2008 The PHP Group 
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies 

$ php5.5 -v 
PHP 5.5.35 (cgi-fcgi) (built: May 3 2016 07:09:03) 
Copyright (c) 1997-2015 The PHP Group 
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies 

私はphp5.5への呼び出しを変更し、職人のファイルを変更し、最初の行にこれを呼び出す:

#!/usr/local/bin/php5.5 
<?php 

しかし、最後に、私はいつも職人モジュールの呼び出しからこれを取得:

Running scheduled command: '/usr/local/bin/php' 'artisan' moneySaved:send >> './logs/log.log' 2>&1 & 

この問題は、誰かが「実行予定のコマンド」行を生成することに起因している必要があります。

答えて

0

調査の結果、Symfonyの内部スクリプトがPHPパスを呼び出すためにphpパスを「見つけ出す」という問題がありました。具体的にそれら:

epoc/vendor/symfony/process/PhpExecutableFinder.php epoc/vendor/laravel/framework/src/Illuminate/Console/Scheduling/Schedule.php

binary varがPHPを呼び出すためのパスを保持しています。私の場合は、php5.5の1and1パスを使用するように強制しました。それだけです。

public function command($command, array $parameters = []) { 
    //$binary = ProcessUtils::escapeArgument((new PhpExecutableFinder)->find(false)); 
    $binary = "/usr/local/bin/php5.5";​ 
    if (defined('HHVM_VERSION')) { 
     $binary .= ' --php'; 
    }​ 
    if (defined('ARTISAN_BINARY')) { 
     $artisan = ProcessUtils::escapeArgument(ARTISAN_BINARY); 
    } else { 
     $artisan = 'artisan'; 
    }​ 
    return $this->exec("{$binary} {$artisan} {$command}", $parameters); 
} 

今すぐ動作します。

+1

あなたは正しいです、急いで私はそれをマークするのを忘れました。完了 – Eagle

関連する問題