在不同的服务器中使用 composer autoload 找不到类

我有一个非常简单的 PHP/Composer 应用程序,其结构如下:


- src

  - content

    - test

      - Sandbox.php

Sandbox.php 只有一个打印“test”的静态函数,它的命名空间是


namespace MyApplication\Content\Test;

我的 autoload.php 有 MyApplication 一个“自动加载”属性。


"autoload" : {

    "psr-4": {"MyApplication\\": "src/"}

},

我composer install --no-dev在带有 XAMPP 的 Windows 环境中运行,并在我执行的 test.php 文件中运行(为了进行非常简单的测试):


$autoloadFile = __DIR__ . '/wp-content/plugins/sandbox/vendor/autoload.php';

require $autoloadFile;

echo 'autoload = ' . file_exists($autoloadFile);

echo '<br />';

echo 'class_exists = ' . class_exists('MyApplication\Content\Test\Sandbox');

当我在本地运行此 test.php 文件时,它运行良好。MyApplication 正在加载 Sandbox 类。


但是,当我将其发布到我的服务器(基于 Linux 的服务器但运行在相同的 PHP 版本上)时,找不到沙箱类。


我确保我的 /vendor/ 文件夹也已正确上传。


我想知道问题是否正在发生,因为我在 Windows 环境中运行 composer install 而它应该在我的服务器中运行相同的命令(目前我不能)。/vendor/ 文件夹上传是否足以使自动加载类正常工作?


狐的传说
浏览 160回答 1
1回答

交互式爱情

您文件的路径是src/content/test/Sandbox.php,根据 PSR-4,它应该是src/Content/Test/Sandbox.php- 在 Windows 上它并不重要,但在 Linux 上它确实如此。
打开App,查看更多内容
随时随地看视频慕课网APP