मैंने PHP प्रति the getting started instructions found here के लिए एडब्ल्यूएस एसडीके स्थापित करने के लिए संगीतकार का उपयोग किया है। मैंने इसे अपने एचटीएमएल रूट में स्थापित किया। मैंने "AmazonU3FullAccess" की एकमात्र अनुमति के साथ "ImageUser" नामक एक आईएएम उपयोगकर्ता बनाया और इसकी चाबियाँ कैप्चर की।मैं PHP के माध्यम से AWS S3 तक कैसे पहुंच सकता हूं?
[default]
aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID
aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY
हाँ, मैं उचित कुंजी के साथ उन लोगों के अपर केस शब्द की जगह:
Per the instructions here, मैं एक फ़ाइल "साख" कहा जाता है इस प्रकार बनाया। फ़ाइल HTML रूट में छिपी उपनिर्देशिका ".aws" में रहती है।
<?php
// Include the AWS SDK using the Composer autoloader.
require '../vendor/autoload.php';
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;
$bucket = 'testbucket';
$keyname = 'test.txt';
// Instantiate the client.
$s3 = S3Client::factory();
try {
// Upload data.
$result = $s3->putObject(array(
'Bucket' => $bucket,
'Key' => $keyname,
'Body' => 'Hello, world!',
'ACL' => 'public-read'
));
// Print the URL to the object.
echo $result['ObjectURL'] . "\n";
} catch (S3Exception $e) {
echo $e->getMessage() . "\n";
}
?>
: फ़ाइल की यूनिक्स अनुमतियाँ 664.
मैं S3 के लिए एक फ़ाइल को अपलोड करने का परीक्षण करने के ("टी" कहा जाता है मेरी एचटीएमएल जड़ की उप-निर्देशिका के "test.php" कहा जाता है) इस सरल फ़ाइल बनाई हैं दुर्भाग्य से, यह एक http त्रुटि 500 फेंकता लाइन पर:
$s3 = S3Client::factory();
हाँ, autoloader निर्देशिका सही है। हाँ, बाल्टी मौजूद है। नहीं, फ़ाइल "test.txt" पहले से मौजूद नहीं है।
उपर्युक्त पृष्ठ के अनुसार, "अगर एसडीके को कोई प्रमाण-पत्र या प्रोफाइल स्पष्ट रूप से प्रदान नहीं किया गया था और पर्यावरण चर में कोई प्रमाण-पत्र परिभाषित नहीं किया गया था, लेकिन एक क्रेडेंशियल फ़ाइल परिभाषित की गई है, तो एसडीके 'डिफ़ॉल्ट' प्रोफ़ाइल का उपयोग करेगा।" फिर भी, मैंने केवल वही परिणाम प्राप्त करने के लिए फैक्ट्री स्टेटमेंट में प्रोफ़ाइल "डिफ़ॉल्ट" को स्पष्ट रूप से निर्दिष्ट करने का प्रयास किया।
मैं क्या गलत कर रहा हूं?
मुझे लगता है कि एसीएल में कोई समस्या है। मुझे लगता है कि आपको 'एसीएल' => 'सार्वजनिक-पढ़ने' के बजाय 'एसीएल' => 'पब्लिक-रीड-राइट' के साथ प्रतिस्थापित करने की आवश्यकता है => 'पब्लिक-रीड' http://docs.aws.amazon.com/cli/latest/reference/ s3api/put-object-acl.html – Nandakumar
जबकि मुझे लगता है कि यह भी एक समस्या हो सकती है, हम 500 त्रुटि के साथ विफल होने से पहले कभी भी स्क्रिप्ट में इसे प्राप्त नहीं करते हैं। –