1

私の問題:

require_once '/includes/aws-sdk-1.5.2/sdk.class.php';

私の環境:__autoload()必要なクラスを取得するために 使用するかなり標準的なPHPサイトがあります。ただし、ファイルをS3に送信するためにSDKを含める必要がありますが、ライブラリを要求するだけでアプリ全体のスコープが失われ、後続のコードが壊れてしまうようです。

例:

// Save to S3
require_once '/var/www/html/system/aws-sdk-1.5.2/sdk.class.php';

$s3 = new AmazonS3();

if( ! $s3->if_bucket_exists(S3_BUCKET) )
    throw new Exception('S3 bucket does not exist.');


$response = $s3->create_object(S3_BUCKET, $temp_file['s_unique_name'], array(
    'fileUpload' => $_FILES['my_file']['tmp_name'],
    'acl'        => $s3::ACL_PUBLIC
));

// Save file
$photo = new vehicle_photo();
$photo->i_vehicle = $i_vehicle;
$photo->s_file    = $temp_file['s_url'];
$photo->s_label   = $_FILES['my_file']['name'];
$photo->save();

そのため、// Save to S3スニペットを有効にするvehicle_photoと、この時点以降に使用される可能性のある他のすべてのクラスに加えて、次のクラスが見つかりなくなります。無効にすると、すべてが機能します。

ここで何が起こっているのですか?

4

1 に答える 1

4

自動読み込みメカニズムが競合しているようです。https://forums.aws.amazon.com/thread.jspa?threadID=85239が参考になるかもしれません。さらに、spl_autoload_register単純な古いものよりも優れて__autoloadいます-オートローダーコードをそれに移行することを検討してください.

于 2012-04-10T20:37:51.107 に答える