2017-10-17 52 views
0

我正在嘗試安裝一個較舊的Laravel項目。Laravel Composer看到錯誤的PHP版本

當我運行作曲家安裝我收到以下錯誤

This package requires php >=5.6.4 but your PHP version (5.5.35) does not satisfy that requirement. 

當我運行

php -v 

我得到以下結果

PHP 7.1.10 (cli) (built: Oct 12 2017 14:00:12) (ZTS) 

這是我作曲的內容.json

{ 
    "name": "laravel/laravel", 
    "description": "The Laravel Framework.", 
    "keywords": ["framework", "laravel"], 
    "license": "MIT", 
    "type": "project", 
    "require": { 
     "php": ">=5.6.4", 
     "doctrine/dbal": "^2.6", 
     "guzzlehttp/guzzle": "^6.3", 
     "intervention/image": "^2.4", 
     "intervention/imagecache": "^2.3", 
     "laravel/framework": "5.4.*", 
     "laravel/tinker": "~1.0", 
     "laravelcollective/html": "^5.4", 
     "maatwebsite/excel": "^2.1", 
     "sentry/sentry-laravel": "^0.8.0", 
     "spatie/laravel-glide": "^3.2", 
     "spatie/laravel-permission": "^2.6", 
     "spatie/laravel-pjax": "^1.3" 
    }, 
    "require-dev": { 
     "fzaninotto/faker": "~1.4", 
     "mockery/mockery": "0.9.*", 
     "phpunit/phpunit": "~5.7" 
    }, 
    "autoload": { 
     "classmap": [ 
      "database" 
     ], 
     "psr-4": { 
      "App\\": "app/" 
     } 
    }, 
    "autoload-dev": { 
     "psr-4": { 
      "Tests\\": "tests/" 
     } 
    }, 
    "scripts": { 
     "post-root-package-install": [ 
      "php -r \"file_exists('.env') || copy('.env.example', '.env');\"" 
     ], 
     "post-create-project-cmd": [ 
      "php artisan key:generate" 
     ], 
     "post-install-cmd": [ 
      "Illuminate\\Foundation\\ComposerScripts::postInstall", 
      "php artisan optimize" 
     ], 
     "post-update-cmd": [ 
      "Illuminate\\Foundation\\ComposerScripts::postUpdate", 
      "php artisan optimize" 
     ] 
    }, 
    "config": { 
     "preferred-install": "dist", 
     "sort-packages": true, 
     "optimize-autoloader": true 
    } 
} 

這個項目怎麼可能認爲我有php 5.6運行?

謝謝。

+0

您使用的是什麼環境,Homestead?嘗試並刪除您的composer.lock文件並再次運行 –

+1

您的系統中可能安裝了多個PHP版本,並且您的Web服務器配置爲使用5.5.35。檢查您的Web服務器的配置文件。 –

+0

@JoshGriggs這只是Laravel代客。 – Notflip

回答

1

我也有這個問題。如果您不想更新所有composer包,可以通過手動更改composer.lock文件並在JSON對象中編寫platform > php中的實際PHP版本來解決此問題。

... 
"platform": { 
    "php": "7.1" 
} 
... 

雖然它的工作原理,最值得推薦的方法,這樣做將刪除您composer.lock文件,在composer.json改變platform > php版本,然後執行composer install

+0

這是一個很好的解決方案!我猜想比更新更好。我總是很害怕在更新之後會有什麼東西會破壞 – Notflip

+0

這是很好的解決方案!感謝信息gd.silva。 @Notflip我認爲我的答案也適用於你? –

+0

是的,在大多數情況下更新一切並不是最好的選擇。 –

0

當你安裝舊laravel項目,然後你只需要運行命令:

composer update

這將更新它在composer.json文件中定義的所有的依賴,當你安裝laravel的新項目,你需要使用:

composer install

如果你想改變php version,只是檢查它使用phpinfo() ,這給你完美的PHP版本,在你的本地服務器中使用!

希望這可以幫助你,你理解!

+0

我不知道這是否是真的..更新更新在他們的約束內的新版本依賴,對不對?安裝只是安裝當前版本,通常應該可以在較舊的項目上運行? – Notflip

+0

是的,你是對的。 –

1

這是一個config/env問題。理想情況下,你可以有多個PHP版本來測試,在Apache中可以交換這樣的版本:

Example: 
sudo a2dismod php5.6 
sudo a2enmod php7.0 
sudo service apache2 restart 

請告訴我這裏發生的是,當他運行PHP -v他正在運行PHP-CLI被配置爲在PHP7運行,但也許他的apache已啓用5.5。 so

sudo a2dismod php5.5 
sudo a2enmod php7.0 
sudo service apache2 restart