2

私は、あらゆる Web アプリケーション プロジェクトに Silex (および Composer) を使用しています。

4 つのエンティティとフォームを自動ロードしたい:

  1. FSB\MyProject\Entity\Booking --> /src/FSB/MyProject/Entity/Booking.php
  2. FSB\MyProject\Form\BookingType --> /src/FSB/MyProject/Form/BookingType.php
  3. FSB\MyProject\Entity\Contact --> /src/FSB/MyProject/Entity/Contact.php
  4. FSB\MyProject\Form\ContactType --> /src/FSB/MyProject/Form/ContactType.php

composer.json は psr-0 配列で定義されています。

{
    "require": {
        "silex/silex": "~1.0",
        [...]
    },
    "autoload": {
        "psr-0": {
            "FSB": "src/"
        }
    }
}

次に、index.php ファイルで次のように呼び出します。

use FSB\MyProject\Entity\Contact;
use FSB\MyProject\Form\ContactType;
use FSB\MyProject\Entity\Booking;
use FSB\MyProject\Form\BookingType;

$contact = new Contact();

私の開発環境、MAMP、php 5.4ではすべて正常に動作します

しかし、PHP 5.4を搭載したUbuntuの本番サーバーであるApache2でも壊れます

「PHP 致命的なエラー: クラス 'FSB\MyProject\Entity\Contact' が /[...]/index.php に見つかりません」

次のようなエンティティをロードする多くの方法を試しました。

{
    "require": {
        "silex/silex": "~1.0",
        [...]
    },
    "autoload": {
        "psr-0": {
            "FSB/Palmeraie": "src/",
        }
    }
}

あるいは:

{
    "require": {
        "silex/silex": "~1.0",
        [...]
    },
    "autoload": {
        "psr-0": {
            "FSB\\Palmeraie\\Entity": "src/",
            "FSB\\Palmeraie\\Form": "src/"
        }
    }
}

--> 私の開発環境ではいくつかの方法が機能しています。私の本番環境にはありません...

私は何か見落としてますか ?

4

2 に答える 2

1

「composer update」を実行すると、再び動作するようになります。

于 2014-01-22T11:22:15.357 に答える