【发布时间】:2020-09-15 22:42:55
【问题描述】:
我有一个非常简单的 PHP/Composer 应用程序,其结构如下:
- src
- content
- test
- Sandbox.php
Sandbox.php 只有一个静态函数来打印“test”,它的命名空间是
namespace MyApplication\Content\Test;
我的 autoload.php 有 MyApplication 一个“自动加载”属性。
"autoload" : {
"psr-4": {"MyApplication\\": "src/"}
},
我在带有 XAMPP 的 Windows 环境中运行 composer install --no-dev,并在我执行的 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 版本上运行时,找不到 Sandbox 类。
我确保我的 /vendor/ 文件夹也已正确上传。
我想知道问题是否正在发生,因为我在 Windows 环境中运行 composer install 而它应该在我的服务器中运行相同的命令(我目前不能)。 /vendor/ 文件夹上传不应该足以让自动加载类正常工作吗?
【问题讨论】:
-
你尝试过什么调试问题?
-
@rob006 不幸的是,没有。我以前试过。这很奇怪,因为在我的开发环境中它可以工作,但是当我将它发布到另一台服务器时它就不行了。
-
@nico-haase 目前我唯一可以调试的是检查 error_log 文件,它告诉我找不到我的课程。我希望同样的错误可以在本地发生。这样我就有更多的工具可以调试。
标签: php composer-php autoload