PHP Artisan:"无法打开流:没有此文件或目录"

19

我刚刚开始学习php/laravel,通过按照一些指南和教程的步骤,我使用 php artisan serve 命令来运行服务器。

我采取的步骤如下:

  1. 使用Composer安装laravel,并将其添加到$PATH中。
  2. 使用laravel new new-blog创建一个项目。
  3. 进入项目文件夹并运行php artisan serve命令。

然而,与期望的带有地址的php服务器输出不同,我收到了以下错误消息:

PHP Warning:  require(/home/sflash/Documents/php/laravel/new-blog/vendor/autoload.php): failed to open stream: No such file or directory in /home/sflash/Documents/php/laravel/new-blog/artisan on line 18
PHP Fatal error:  require(): Failed opening required '/home/sflash/Documents/php/laravel/new-blog/vendor/autoload.php' (include_path='.:/usr/share/php') in /home/sflash/Documents/php/laravel/new-blog/artisan on line 18

我正在使用Linux机器(Debian Buster)。我的项目文件夹结构如下:

app        composer.json  package.json  README.md  server.php  webpack.mix.js
artisan    config         phpunit.xml   resources  storage
bootstrap  database       public        routes     tests

正如上面的错误代码所述,我没有一个名为vendor/autoload.php的文件。这是如何发生的/如何解决?


3
你发送的应用程序目录中没有 vendor 文件夹,请尝试使用 composer update - bhucho
我从composer那里收到了一个错误信息:Your requirements could not be resolved to an installable set of packages.。问题1是:Problem 1 - phpunit/phpunit[dev-master, 9.3.0, ..., 9.4.x-dev] require ext-dom * -> it is missing from your system. Install or enable PHP's dom extension. - phpunit/phpunit 9.5.x-dev is an alias of phpunit/phpunit dev-master and thus requires it to be installed too. - Root composer.json requires phpunit/phpunit ^9.3 -> satisfiable by phpunit/phpunit[9.3.0, ..., 9.5.x-dev (alias of dev-master)]. 其余内容过于冗长。 - Silver Flash
对于 ext-dom 安装 php-xml,可以执行 sudo apt-get install php-xml 命令。如果需要指定 PHP 版本,可以执行 sudo apt-get install php7.2-xml 命令。安装完成后,需要重启 Apache 服务器。 - bhucho
我使用 phpunit 包修复了上述错误,并运行了命令。它奏效了!把它作为一个答案发布,我会投票支持的。 - Silver Flash
7个回答

21

除了忘记将 vendor 文件夹添加到您的项目目录中之外,您已经做得很正确了,只需尝试一下。

 composer i 
在终端中进入项目目录将解决您的错误。如果遇到其他错误,请删除composer.lock文件,然后再尝试一次。 更新: 在面对PHP版本不匹配或依赖版本锁定等问题时,不要删除composer.lock文件,而是使用。
composer update

6
这是因为你缺失了“Vendor”目录,导致出现了缺失依赖错误。要解决这个问题,你需要运行下面的命令: ```bash composer install ```
Composer update

大多数情况下,更新Composer会重新生成vendor文件夹和autoload.php文件。

或者,您可以使用以下命令重新生成autoload.php文件:

composer dump-autoload

如果发现Composer已损坏,请卸载现有的Composer并重新安装。要安装Composer,请在根项目文件夹中运行以下命令:

Composer install

2

您需要先通过运行composer的安装命令添加供应商目录:

composer install

然后更新你的Composer包:

composer update

在最后运行您的迁移命令。
php artisan migrate
php artisan serve

2
所有这些解决方案都适用于已经下载了依赖项的情况。
我遇到了类似的问题,但使用Composer Update和/或composer i CLI解决方案无法解决,因为有文件/依赖项丢失或无法找到。
我发现我需要在我的项目中安装laravel,如下所示:composer global require laravel/installer,因此上述解决方案将无法工作。所以我运行了
composer help

并且这让我使用了它。
composer u

然后它下载了所有必要的依赖项。

接下来是

php artisan serve

命令按预期工作。


1

你的项目中缺少vendor文件夹

你需要重新安装laravel并尝试使用以下命令进行安装

laravel new project 或者 composer create-project ---prefer-dist laravel/laravel blog


正如我之前的评论所述,如果我使用create-project ---prefer-dist laravel/laravel blog,似乎会出现相同的错误。我认为我的安装缺少依赖项,例如phpunit。有没有一种快速获取它们所有的方法? - Silver Flash

0
这个错误也可能是由于没有手动更新 composer.json 文件中的 "files" 部分造成的,即:
"files": ["app/Some/Stucked/Refactored/Old/Location.php",
          "app/Some/Good/Location.php"],

然后:

composer update

0

您从GitHub克隆项目时是否遇到此问题?如果是,请确保在设备上创建本地laravel项目以验证laravel安装是否正确。如果本地项目运行良好,则可以继续从仓库克隆项目。 克隆项目后,复制文件.envy.example并将其中一个重命名为.envy,然后运行 composer update ,之后运行 php artisan key:generate ,然后您可以再次尝试 php artisan serve


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接