S3 SDK打破我的网站

时间:2012-04-10 20:30:52

标签: php amazon-s3

我的问题:

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

我的环境: 我有一个非常标准的PHP站点,它使用__autoload()来获取我需要的任何类。但是,我现在需要包含SDK以将文件发送到S3,但是只需要该库似乎会摒弃整个应用程序的范围,以便后面的任何代码都被破坏。

示例:

// 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类。如果我禁用它,一切正常。

这里发生了什么?

1 个答案:

答案 0 :(得分:4)

听起来像自动加载机制是冲突的。您可能会发现这有用:https://forums.aws.amazon.com/thread.jspa?threadID=85239。此外,spl_autoload_register优于普通的__autoload - 请考虑将自动加载器代码迁移到该版本。