【问题标题】:How to push Laravel 5.4 project to a server with PHP CLI version 5.4.16?如何使用 PHP CLI 5.4.16 版本将 Laravel 5.4 项目推送到服务器?
【发布时间】:2017-07-07 01:25:23
【问题描述】:

我的客户端使用 Apache PHP 版本 5.6.30 的服务器,但 CLI PHP 版本是 5.4.16。而且他们无法更改 CLI PHP 版本。

我使用 Git && SSH 将项目从本地机器推送到服务器。但是由于CLI PHP版本是5.4.16,所以无法运行

composer install

我会收到这些消息

Problem 1
    - This package requires php >=5.6.4 but your PHP version (5.4.16) does not satisfy that requirement.
  Problem 2
    - symfony/var-dumper v3.3.2 requires php >=5.5.9 -> your PHP version (5.4.16) does not satisfy that requirement.
    - symfony/var-dumper v3.3.2 requires php >=5.5.9 -> your PHP version (5.4.16) does not satisfy that requirement.
    - Installation request for symfony/var-dumper v3.3.2 -> satisfiable by symfony/var-dumper[v3.3.2].

phpinfo() 告诉 PHP 的版本是 5.6.30。所以我想那部分应该没问题。但我不知道如何解决这种情况。

当我访问网站时,我收到以下错误消息:

Warning: require(/var/www/vhosts/example.com/httpdocs/vendor/composer/ClassLoader.php): failed to open stream: No such file or directory in /var/www/vhosts/example.com/httpdocs/vendor/composer/autoload_real.php on line 12

Warning: require(/var/www/vhosts/example.com/httpdocs/vendor/composer/ClassLoader.php): failed to open stream: No such file or directory in /var/www/vhosts/example.com/httpdocs/vendor/composer/autoload_real.php on line 12

Fatal error: require(): Failed opening required '/var/www/vhosts/example.com/httpdocs/vendor/composer/ClassLoader.php' (include_path='.:/opt/plesk/php/5.6/share/pear') in /var/www/vhosts/example.com/httpdocs/vendor/composer/autoload_real.php on line 12

【问题讨论】:

  • /path/to/php-5.6 /path/to/composer install
  • 如果@Devon 的建议不起作用,您可以随时尝试作弊并直接将正常运行的PHP cli 二进制文件复制到服务器。当然,这本身就是一项壮举。
  • @ceejayoz CentOS/RHEL7 上的 PHP 5.4 将在另外 5 年多的时间内收到安全更新,但是,Plesk 允许您在 OP 所指的系统版本旁边安装其他版本。跨度>

标签: php laravel


【解决方案1】:

由于您使用的是 plesk,您应该在 /opt/plesk/php 找到其他 PHP 版本的二进制文件。

/opt/plesk/php/5.6/bin/php /usr/bin/composer install

【讨论】:

  • 实际上这行得通。在我遇到此错误消息之前安装依赖项:php artisan optimize PHP Parse error: syntax error, unexpected 'class' (T_CLASS), expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in /var /www/vhosts/example.com/httpdocs/artisan 在第 31 行脚本 php artisan 优化处理返回的 post-install-cmd 事件并返回错误代码 255。似​​乎 Laravel 内部运行“php artisan”,它没有指向正确php版本。
  • @JoshuaLeung 是的,来自composer.json,您可以修改它,也可以在之后手动运行/opt/plesk/php/5.6/bin/php artisan 命令。
【解决方案2】:

虽然不理想,但您也可以将整个供应商文件夹推送到服务器。 composer install 所做的只是创建供应商文件夹。如果您上传您的整个项目文件夹,包括供应商,那么您将能够在服务器上运行它而无需运行composer。只要网络版本满足您的最低要求,那么这意味着您应该能够有效地忽略客户端版本。

话虽如此,如果您需要从命令行运行任何任务,您将再次遇到此问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-09
    • 2020-03-11
    • 2020-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多