【发布时间】:2016-04-25 06:21:56
【问题描述】:
我正在为 laravel 应用程序设置一个新服务器。我已经安装了 composer 并从我的 cpanel 中选择了 php5.6.15。但是当我在终端中运行 php -v 命令时,它显示我当前的版本为 php5.2.19。
这是我服务器上的 php.ini 文件,它显示 5.6 版本
我已经使用 git 将我的代码上传到服务器。当我运行命令 composer install 它给我这个错误。
Your requirements could not be resolved to an installable set of packages.
Problem 1
- laravel/framework v5.1.28 requires php >=5.5.9 -> your PHP version (5.4.43) or value of "config.platform.php" in composer.json does not satisfy that requirement.
- laravel/framework v5.1.28 requires php >=5.5.9 -> your PHP version (5.4.43) or value of "config.platform.php" in composer.json does not satisfy that requirement.
- Installation request for laravel/framework v5.1.28 -> satisfiable by laravel/framework[v5.1.28].
我正在使用 laravel 5.1。如果我将它降级到 5.0,它会给其他包带来依赖错误。这是我的 composer.json 文件。
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"php": ">=5.4.43",
"laravel/framework": "5.1.*",
"bestmomo/scafold": "dev-master",
"illuminate/html": "5.*",
"barryvdh/laravel-debugbar": "^2.0",
"intervention/image": "^2.3",
"doctrine/dbal": "^2.5",
"davejamesmiller/laravel-breadcrumbs": "^3.0",
"yajra/laravel-datatables-oracle": "^5.11",
"zizaco/entrust": "dev-laravel-5"
},
"require-dev": {
"fzaninotto/faker": "~1.4",
"mockery/mockery": "0.9.*",
"phpunit/phpunit": "~4.0",
"phpspec/phpspec": "~2.1"
},
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
}
},
"autoload-dev": {
"classmap": [
"tests/TestCase.php"
]
},
"scripts": {
"post-install-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"pre-update-cmd": [
"php artisan clear-compiled"
],
"post-update-cmd": [
"php artisan optimize"
],
"post-root-package-install": [
"php -r \"copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"php artisan key:generate"
]
},
"config": {
"preferred-install": "dist",
}
}
我在 /usr/php/php56 下有 php56,我可以通过为其设置别名或输入完整路径来运行它。我还给它起了一个别名,然后php -v 显示我5.6.15 但是当我运行时
composer install 它仍然提供与上述相同的输出。
我可能无法将 php cli 的默认版本设置为 5.6,或者它与 bluehost 服务器上的 laravel 框架支持有关。我认为 bluehost 支持不太重要,因为我有可以做其余工作的作曲家。非常感谢您帮助解决这个问题。
【问题讨论】:
-
您确定要在远程(可能是生产环境)上构建和下载依赖项吗?这听起来像是一个不好的做法。最好为您的项目创建一个包(甚至是一个 zip )并将其部署到删除服务器,而不是在那里构建它(带有依赖项)
-
@mikibrv 你建议我应该从我的本地机器部署我的完整源代码并安装所有作曲家包在
vendor/目录下?? -
是的。我想这是部署 Web 应用程序(php - java - 不管)的最安全和最好的方法。这是一个你已经构建和测试过的包,你知道它在那里(有点类似于 GIT TAG)。大多数时候,您甚至不需要上传供应商目录(但是您必须使用一些版本控制,例如 GIT)。我给自己做了一个脚本,它只是从应用程序-引导程序-公共-供应商目录和 .htaccess 文件创建一个 zip
-
@mikibrv 你应该镜像本地和生产环境,这就是配置的目的。这样,开发人员可以在相同的环境中工作。永远不要上传供应商目录,您必须在生产或测试中运行
composer install,在开发中运行composer update。 -
这毫无意义。如果您想在本地镜像生产,您将在每次更改时上传供应商文件夹,并确保它不会经常发生。如果您在生产环境中执行 composer install,首先您将在此过程中停机,如果发生意外情况,您将无法调试。
标签: php laravel server composer-php shared-hosting