sfAmazonS3Plugin
NOTE: https://github.com/JoshuaEstes/sfAmazonS3Plugin is where you can find the latest code for this plugin as well as submit issues if any. The code contained within the symfony repo is not updated, however the github code is. Please use that code to be sure you are up to date.
This plugin allows you to connect to Amazon s3 services. You should note that you
WILL NEED the Zend library for this. It needs to be installed in lib/vendor/Zend
Place this function in the ProjectConfiguration.class.php file:
static public function registerZend()
{
if (!self::$_ZendAutoloader)
{
set_include_path(implode(PATH_SEPARATOR, array(
sfConfig::get('sf_lib_dir').'/vendor',
get_include_path(),
)));
require_once 'Zend/Loader/Autoloader.php';
self::$_ZendAutoloader = Zend_Loader_Autoloader::getInstance();
}
return self::$_ZendAutoloader;
}
In the same file add this variable to the top of the class:
static protected $_ZendAutoloader = false;
If you have already added something similar in this file then you should be good
as long as the function 'registerZend()' is in there and it is static.
app.yml
prod:
amazon_s3:
enabled: true
bucket: BUCKET NAME
dev:
amazon_s3:
enabled: true
bucket: BUCKET NAME
test:
amazon_s3:
enabled: true
bucket: BUCKET NAME
all:
amazon_s3:
access_key: PLACE ACCESS KEY HERE
secret_key: PLACE SECRET KEY HERE
by default, amazon s3 is configured to be off by default, if you wish to have it
turned on by default the set 'enabled: true' for all
In you upload form update the widget that has the widget InputFile or similar widget.
$this->widgetSchema['image'] = new sfWidgetFormInputFile();
$this->validatorSchema[image'] = new sfValidatorFile(array(
'mime_types' => 'web_images',
'path' => sfConfig::get('sf_upload_write_dir').'/user_uploads',
'validated_file_class' => 'sfValidatedAmazonS3File'
));
Please Note: This plugin was created from the presentation by Kris Wallsmith which
can be found here http://www.slideshare.net/kriswallsmith/symfony-in-the-cloud
Features
- can be turned on/off (if disabled uploads goto your web/uploads directory)
- environmental aware (can have different settings for dev, prod, and test)
- can upload directly to your s3 bucket (if enabled) or can upload to you local web/uploads (if disabled)
Todo Features
- add some tasks that allow you to sync files
- add more helper functions that would allow you to use s3 as a CDN
- security, since the access_key and secret_key are in the app.yml file, those keys can be viewed while in the dev environment.
- Do away with the dependence of Zend and use the amazon sdk