我有一个在 MAMP 本地开发的简单 PHP 应用程序。我确实使用了一些 Composer 包。它在我的本地机器上完美运行。当我使用 Beanstalk 应用程序(不是 AWS Beanstalk,我指的是 Git 托管和部署服务 Beanstalk)部署网站时,一旦在代码中引用了第一个类名,它就会引发错误。
Fatal error: Class 'User' not found in /srv/www/example.com/public_html/utilities/authenticate.php on line 8
此类特定于用于访问数据库的 ActiveRecord 模型类。在代码中它看起来像这样:
$user_row = User::find_by_email($theuser);
非常简单,可以在我的本地开发环境中使用。ActiveRecord 由 Composer 自动加载。
然后我尝试通过 sftp 将应用程序部署到我的 Centos VPS,令我惊讶的是,错误消失了,应用程序按预期工作。我最好的猜测是 Beanstalk 在部署过程中以某种方式破坏了应用程序。因此,为了测试该理论,我在服务器上设置了一个裸 Git 存储库,并使用 post-receive 挂钩将存储库检出到公共 Apache 文件夹中。这导致了我在使用 Beanstalk 时遇到的相同错误。似乎问题与 git 部署有关。我检查了文件是否具有标准的 644 权限,并且文件夹设置为 755。Apache 拥有公用文件夹,因此所有权也不是问题。我真的不知道为什么会发生这种情况。非常感谢任何关于此事的智慧。