stp 传输后,PHP Composer 无法在 ec2 Linux 实例上运行

问题描述 投票:0回答:3

我有一个在 xampp 上运行的 php 项目,但我使用 Linux 创建了一个 ec2 实例,并且我在 putty 上使用他的私有 IP 访问它,因为 Web 应用程序应该只能通过 Intranet 访问。我使用 stp 来移动整个项目,一切都一样,但是一些 php 文件的作曲家给了我这个错误(我从 apache 日志中得到它)

PHP Fatal error:  Uncaught Error: Failed opening required '/var/www/html/host/public_html/vendor/composer/../ezyang/htmlpurifier/library/HTMLPurifier.composer.php' (include_path='.:/usr/share/php') in /var/www/html/host/public_html/vendor/composer/autoload_real.php:41\nStack trace:\n#0 /var/www/html/host/public_html/vendor/composer/autoload_real.php(45): {closure}()\n#1 /var/www/html/host/public_html/vendor/autoload.php(25): ComposerAutoloaderInitc3b80a39a0d2307602d3e5706c8f19a8::getLoader()\n#2 /var/www/html/host/public_html/accessdata.php(18): require('...')\n#3 {main}\n  thrown in /var/www/html/host/public_html/vendor/composer/autoload_real.php on line 41, referer: http://host/page1.php

我使用composer来使用phpoffice,用户应该能够上传一些excel文件,然后使用php我将它们上传到数据库

编辑:运行时

composer install
我收到这个错误
Failed to download myclabs/php-enum from dist: curl error 28 while downloading https://api.github.com/repos/myclabs/php-enum/zipball/a867478eae49c9f59ece437ae7f9506bfaa27483: Connection timeout after 10001 ms

php apache composer-php
3个回答
1
投票

你有一个严重的误解,应该从一开始就消除:

  • 如果您的盒子无法访问互联网,那么运行实际上需要互联网来完成您要求的任务的 Composer 命令时您将不会感到高兴。
    • 例如,您想要在没有互联网访问的情况下运行“composer update”命令。
  • Composer 毫不奇怪,在无法访问互联网的情况下创建了互联网访问。
  • 如果您还没有明白,为什么这实际上并不令人惊讶,那么这一定是您对 Composer 以及广域网 (WAN) 和局域网 (LAN) 之间的根本区别的严重误解。
  • 顺便说一句,最好的地方是 localhost。你的家就是你的城堡。

所以你的作曲家婚姻肯定存在关系问题。

作曲家治疗师 Nico Haase 已经评论过“您不需要在任何生产系统上安装 Composer”,如果您正在寻找第二意见,我同意。实际上我想说,如果你在生产系统上安装 Composer,你就会遇到麻烦、问题、破碎的心(和依赖项)。

自己写

我[原文如此!]从本地副本上传,我[原文如此!]在服务器上无法访问互联网

因此,使用 Composer 在本地构建供应商文件夹,然后上传整个应用程序代码(包括供应商目录)。完成。

是的,完成了。

机器再次工作。

他们生活得长久而幸福。

(这可能需要阅读,因为每对夫妻的治疗都需要每个人的努力才能重新回到一起。这可能是一段令人畏惧的时刻,永远提醒你们两个将共同拥有的光明前景和未来,探索荒野的角落内联网在一起。)


0
投票
@mega。正如您提到的,您已将

composer.phar

 文件上传到服务器上,请尝试通过从应用程序的根文件夹运行 
composer dump-autoload
 命令再次创建 autoload.php 文件,并检查其是否正常工作。

composer dump-autoload

命令再次重新生成自动加载文件,为此您不需要有互联网连接。

如果您遇到类似“无法打开流:权限被拒绝”的错误,请尝试使用

sudo

 运行此命令。


0
投票
stp 移动整个项目

从未听说过

stp

,也许您的意思是
sftp
?鉴于您的评论 
i access it with the private ip with putty and the private key
 ,我认为 
sftp
 是一个安全的选择。

无论如何,你的供应商文件夹中的某些内容被搞乱了,你无法在目标系统上运行 Composer,所以请转到你的开发系统,然后运行

rm -rf vendor; composer install;
在那之后,我不知道

stp

是什么,但我不相信它,我相信
rsync
,所以跑吧

rsync /path/to/project_dir/vendor user@intranet_ip:/path/to/project_dir/vendor
现在你应该有一个完整的供应商文件夹,并且

PHP Fatal error: Uncaught Error: Failed opening required '/var/www/html/host/public_html/vendor/composer/..

错误应该消失了。

© www.soinside.com 2019 - 2024. All rights reserved.