Gallery 3.0 Beta 3 is ready!

Beta 3 is here! With this final beta, we begin the sprint to our full release! Your feedback in our beta series has been priceless so far, help us with our final push to work out the last little bugs and issues and polish up the product! Download it now! or read on for more details...

Intended audience

Gallery 3 Beta 3 is still not quite a finished product yet. There's still a lot of polishing to do, and a bunch of small missing features. But even in its incomplete state it is a fast, reliable and secure product. Live a little, try it out! If you're excited about creating beautiful themes and writing your own custom modules, now is a great time to get involved!

Security warning

Our good friends at Gotham Digital Science did a professional security audit for us, and we have fixed all the major flaws they uncovered. The minor issues that remain are along the lines of "you should ask for the old password as a confirmation when you let users change their password." We'll fix those, before the final release. All big security holes are closed. Did we miss some? We hope not, but if you install Beta 3 on a public site, we encourage you to watch for new releases and be prepared to upgrade if we put out security fixes.

Wahoooo! Let's go!

With the disclaimers and warnings out of the way, here it is: Download Gallery 3.0 Beta 3 (1.3 MB) or retrieve directly from our revision control with git clone git://

Upgrading from Gallery 3 Beta 1 and Beta 2

You can upgrade from Beta 1 or Beta 2 (but not from earlier releases). Upgrading is really easy! Unpack the new version on top of the old one to replace the existing files and then either browse to: (except use your real domain name) or if you have shell access, run: php index.php upgrade

The Gallery 3 Philosophy

We set out to make an amazing application. Not only will you be able to easily host your photos, but you'll find that Gallery 3 makes it a joy. We focused on the following 4 principles:

  • Keep It Small - Gallery 3 is 4.5 MB with all of its features. This is a tiny fraction of the size of most similar applications.

  • Make It Intuitive - We've got some great usability and user interface experts on our team, designing and prototyping interfaces that just make sense. Frequent tasks are now quick and easy. Tough tasks are possible with great new interfaces.

  • Make It Fast - We've made some tough decisions in keeping the scope of Gallery 3 small. We've created a set of features that we think will make most of you really happy, while avoiding some of the crazier features that make the product slow. As a result, you're going to find that it's really snappy!

  • Make it Extensible - Our module system is so simple that even now while we're still in beta, the community has written 26 modules ranging from facial recognition to slideshows to batch tagging. Download and play with them from the gallery3-contrib repository on GitHub.

How Did We Do It?

We have stood on the shoulders of giants. Gallery 3.0 is made possible by some truly great advances in technology.

  • Kohana - We evaluated many PHP frameworks before choosing Kohana. It's speed, flexibility and power made it just what we needed. Thanks to the Kohana folks for providing this first class application framework!

  • PHP 5 - We're taking advantage of many of the new features and capabilities available in the latest versions of PHP. This allows us to write much less code and have a faster product.

  • jQuery - the write less, do more Javascript library. Gallery 3's rich user interface is heavily driven by Javascript and is made possible by the simple and powerful jQuery framework.

So what's new in this release?

There's not enough room to list everything, but highlights include:
  • Beta 3 (hide details)
    • Configurable custom URLs for each album, photo or movie.
    • Greatly improved UI for administration pages
    • Systematic fixes for Cross Site Security (XSS) vulnerabilities.
    • Compatibility with PHP 5.3
    • New, extensible context menus for albums, photos and movies.
    • Better support for viewing full size images
    • Rewritten Organize module. It's got a little less functionality now, but it's much cleaner and will be a primary focus for the next release.
    • Tags are now searchable
    • Much improved bidirectional language support
    • 103 fixed tickets in the beta 3 release
  • Beta 2 (show details)
  • Beta 1 (show details)
  • Alpha 4 (show details)
  • Alpha 3 (show details)
  • Alpha 2 (show details)
  • Alpha 1 (show details)


This is the final beta release. Now we're going to be restraining ourselves to UI polishing, cross browser support, performance and stability. We want to release this to you as soon as possible! A few things that we know we'll be adding include:

  • More bulk editing capabilities in the Organize feature
  • Import permissions from Gallery 2
  • Remap Gallery 2 urls to Gallery 3
  • Improved tagging support
  • Basic embedding hooks / instructions
  • (opt-in) Stats collection (helps us to improve the product)

You can track development on our Trac roadmap.

Got feedback?

If you have any overall feedback, please visit the Gallery 3.0 Beta 3 Feedback forum topic and let us know! If you have questions, please visit the Gallery 3 Wiki, the future home for Gallery 3 documentation.

hebhansen's picture

And the hit's just keep on coming :-D

No this is Gallery Life! I think you will get all info you need from this site

Gallery is open source, Free for all to use. It has survived

Gallery 1.x
Gallery 2.x
and Gallery 3.almostRC is under way

You should give it a try, using latest code (check under Bharat's post above). Very smooth platform with new themes and modules pop'ing up on a daily basis. They say it's not ready for production. I am running my site live for 2 months now and it's stable.

all the best
HB -

Oh, that's good! I have another question: How can I deactivate that the images in full size are visible?

floridave's picture
henningstorck wrote:
Oh, that's good! I have another question: How can I deactivate that the images in full size are visible?

Please start a thread in the forums. Make sure you choose the right version.


Blog & G2 || floridave - Gallery Team

Thanks for yet another great gallery! I get a lot of compliments on my gallery...I really owe it to all the hard work from you guys! Making it easy for me to focus on getting my photos online!

I just installed Gallery3 and have been trying for a couple days to get the import module working. I found my embed.php and when I try to import it says the path is not a gallery2 install.

I could really use some help on this. Thanks.


I figured it out! WAWhooo...I just had to look harder at the config.php to find it

Hello, I was wondering. Is it imposible to duplicate files I mean, put the same file over 2 albums?. Every time I've tried, appears an error and the gallery falls down for some minutes. Then passed those minutes gallery works. To fix this I've changed the name before I upload. But some times I just forget to change the name. Some other times when trying to upload, several errors come. Where can I check what is happening, by the behavior i could think is a problem of my server. I use G3 B3 downloaded on december 1st from git. Thank you very much.

nivekiam's picture

First try an experimental version

If you are still having issues, please open a new thread here:
Like Gallery? Like the support? Donate now!!! See G2 live here


I am a G2 user (through debian). It would be nice to have a link to a wiki page with the outlining what the upgrade process should be - some things that are going to work and some that are.

I am using postgres as a back end - if i remember this isn't support on G3 - what is going to be the upgrade for that - I have a lot of tags and other things I have typed in that I don't really want to re type.

Also I use the google maps plugin alot is that going to be supported - is there a page with a list of plugins that work or don't work ?


nivekiam's picture

There's not a true "upgrade". G3 is a completely different program than G2, just as G2 was from G1. There is an import process and a module to work with that. It's called G2 Import. I thought we had a wiki page about but it doesn't look like we do yet:

Though it's usage is pretty self explanatory and it comes with G3 by default.

Nothing from G2 will work in G3, no themes, no modules. All that functionality needs to be re-written. The permissions in G3 are different than G2. In G3 you can only assign permissions to albums and groups. So you need to create groups and put people in those groups. You cannot assign permissions to individual photos or users. This was done to greatly simplify the permissions system and improve it's performance. Someone may add this functionality in the future through a module, but it's not going to be part of the core product.

I am using postgres as a back end - if i remember this isn't support on G3 - what is going to be the upgrade for that

I believe at this time nothing. You'll need to install MySQL for a supported solution. Someone is/was (haven't seen anything lately) working on getting G3 working under PG but I don't know what the status will be or if, once complete, it will be officially supported.

There is a google maps module in -contrib that someone has already contributed:

Here's a list of all official modules:

If you're going to be testing and reporting issues with G3, I recommend you get the latest experimental code and use that. There have been 100s or 1000s of changes since B3 was released:
Like Gallery? Like the support? Donate now!!! See G2 live here


Gallery3 starts to rock.

I put it up and running within a few clicks (latest from git).
After that I imported my Pics from G2 (took a while, but worked well), chose the 3nids theme and uploaded further pics.

Still under construction, but for all who want to give it a try:

Keep up the great work, Thanks!


I am posting this in the threads I find with this problem.. I had this problem, as many others are having, today as well...

After downloading Gallery 3 Beta 3 FROM THE MAIN PAGE I get the error during installation:
"The used table type doesn't support FULLTEXT indexes"

This is because as of mySQL version 5 the default table type is INNO, not MyISAM -->> confirmed.

Someone had posted this link for updating as a fix...
It appears the commits listed in that link are not included in gal3 Beta 3 posted in the main download page, which is weird because the date is correct.
??? why ???

I had to go to the github tree and download the latest release (beta 3 in swing).
Here's the link..

This not only has all the sept changes, but its current thru today, and it installs just fine ;^)
I am looking forward to trying this out for the first time.

Cheers ;^)

nivekiam's picture

Beta3 was a milestone release and was released on 9/12. The fixes you linked to were done on 9/16. So there's no way they could have ever made it into B3. What probably happened is that once B3 was released, more people tried it, someone found the bug, reported it, and it was fixed a few days later.
Like Gallery? Like the support? Donate now!!! See G2 live here

I ready for some more news on G3! What's the latest schedule looking like?


floridave's picture

Close to the holidays it is hard to tell.

Blog & G2 || floridave - Gallery Team

Maybe worth noting that to assign permissions to single user, you can create a group and have just that user in it. (Or so it seems to me; I've done this for a few people who had albums on G2, after move to G3)

I'm using beta3 version.

And always waiting for the day final version will be released :)


Just wanted to upgrade to lastest version from Git.
Now I get the following error message:

Fatal error: Call to private I18n_Core::__construct() from context 'Kohana_Core' in ... gallery3/system/core/Kohana.php on line 142

Can s.b. pls. look into that issue?


bharat's picture

Can you look for and remove modules/gallery/libraries/I18n.php? That file needs to be deleted from your install.
Problems? Check gallery3/var/logs
bugs/feature req's | upgrade to the latest code | use git

Hi Bharat,

That was quick. Thanks. So I did. Now I get the following error message:

Fatal error: Call to undefined function t() in ... gallery3/modules/gallery/views/kohana/error.php on line 107


bharat's picture

@dave8401: can you verify that you have modules/gallery/libraries/Gallery_I18n.php? Sounds like you're either missing that file or it's out of date.
Problems? Check gallery3/var/logs
bugs/feature req's | upgrade to the latest code | use git

Yep, it's there.

I did a git pull and copied this over the existing install. Did this several times before
(uploaded my current file, but seems to be the one from 31bb09c..fc5d1e5).

The only file that I didn't update is the .htaccess as I want to have here my configured old one.

I could give you access to the gallery, if you want. Thanks in advance for helping me out.


@dave8401: when you initially upgraded to the git version, where were you starting from the beta 3. Did you read:


I did one upgrade from beta3 to the recent version (abt. 2 weeks ago) exactly as described in

Now for this upgrade (from experimental to experimental) I thought I could easily unzip over the old install.
Should I do a fresh unzip and move the var/ content over?


floridave's picture
Should I do a fresh unzip and move the var/ content over?

You can do a 'gut pull' and let git do the file deletes for you, but if over-writting you need to move the /var direcotry.

Blog & G2 || floridave - Gallery Team

I Just did a clean install of the latest gallery 3 nightly update.
I am getting errors when i try to update the modules....

Hey wait, you're an admin! We can tell you stuff.
Database_Exception [ Database Error ]:
#1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '{g2_maps} ( `id` int(9) NOT NULL auto_increment, ' at line 1 [ CREATE TABLE IF NOT EXISTS {g2_maps} ( `id` int(9) NOT NULL auto_increment, `g2_id` int(9) NOT NULL, `g3_id` int(9) NOT NULL, PRIMARY KEY (`id`), KEY (`g2_id`)) DEFAULT CHARSET=utf8; ]
SYSPATH/libraries/Database_Mysqli_Result.php[ 29 ]

24 } 25 elseif (is_bool($result)) 26 { 27 if ($result == FALSE) 28 { 29 throw new Database_Exception('#:errno: :error [ :query ]', 30 array(':error' => $link->error, 31 ':query' => $sql, 32 ':errno' => $link->errno)); 33 } 34 else
SYSPATH/libraries/Database_Mysqli.php[ 81 ] » Database_Mysqli_Result_Core->__construct( arguments )

bool FALSE

string(278) "CREATE TABLE IF NOT EXISTS {g2_maps} (
`id` int(9) NOT NULL auto_increment,
`g2_id` int(9) NOT …"

object mysqli(0) {

bool TRUE

76 $result = $this->connection->query($sql);
78 // Set the last query
79 $this->last_query = $sql;
81 return new Database_Mysqli_Result($result, $sql, $this->connection, $this->config['object']);
82 }
84 public function escape($value)
85 {
86 // Make sure the database is connected

SYSPATH/libraries/Database.php[ 274 ] » Database_Mysqli_Core->query_execute( arguments )

string(278) "CREATE TABLE IF NOT EXISTS {g2_maps} (
`id` int(9) NOT NULL auto_increment,
`g2_id` int(9) NOT …"

269 }
270 }
271 else
272 {
273 // Execute the query, cache is off
274 $result = $this->query_execute($sql);
275 }
277 // Stop the benchmark
278 $stop = microtime(TRUE);

MODPATH/gallery/libraries/MY_Database.php[ 45 ] » Database_Core->query( arguments )

string(278) "CREATE TABLE IF NOT EXISTS {g2_maps} (
`id` int(9) NOT NULL auto_increment,
`g2_id` int(9) NOT …"

40 */
41 public function query($sql = '') {
42 if ($this->config["table_prefix"] && !empty($sql)) {
43 $sql = $this->add_table_prefixes($sql);
44 }
45 return parent::query($sql);
46 }
48 public function add_table_prefixes($sql) {
49 $prefix = $this->config["table_prefix"];
50 if (strpos($sql, "SHOW TABLES") === 0) {

MODPATH/g2_import/helpers/g2_import_installer.php[ 29 ] » Database->query( arguments )

string(278) "CREATE TABLE IF NOT EXISTS {g2_maps} (
`id` int(9) NOT NULL auto_increment,
`g2_id` int(9) NOT …"

24 `id` int(9) NOT NULL auto_increment,
25 `g2_id` int(9) NOT NULL,
26 `g3_id` int(9) NOT NULL,
27 PRIMARY KEY (`id`),
28 KEY (`g2_id`))
31 module::set_version("g2_import", 1);
32 mkdir(VARPATH . "modules/g2_import");
33 }

MODPATH/gallery/helpers/module.php[ 138 ] » g2_import_installer::install()

134 // Rebuild the include path so the module installer can benefit from auto loading
135 Kohana::include_paths(true);
136 $installer_class = "{$module_name}_installer";
137 if (method_exists($installer_class, "install")) {
138 call_user_func_array(array($installer_class, "install"), array());
139 } else {
140 module::set_version($module_name, 1);
141 }
142 module::load_modules();

MODPATH/gallery/controllers/admin_modules.php[ 51 ] » module_Core::install( arguments )

array(2) (
0 => string(19) "g2_import_installer"
1 => string(7) "install"


46 $changes->activate[] = $module_name;
47 $activated_names[] = t($info->name);
48 if (module::is_installed($module_name)) {
49 module::upgrade($module_name);
50 } else {
51 module::install($module_name);
52 }
53 module::activate($module_name);
54 }
55 }

MODPATH/gallery/controllers/admin.php[ 50 ] » Admin_Modules_Controller->save( arguments )

string(9) "g2_import"

46 if (!method_exists($controller_name, $method)) {
47 throw new Kohana_404_Exception();
48 }
50 call_user_func_array(array(new $controller_name, $method), $args);
51 }

{PHP internal call} » Admin_Controller->__call()

SYSPATH/core/Kohana.php[ 332 ] » ReflectionMethod->invokeArgs( arguments )

array(2) (
0 => object Admin_Modules_Controller(1) {
private theme => NULL
1 => string(4) "save"


328 // Start the controller execution benchmark
329 Benchmark::start(SYSTEM_BENCHMARK.'_controller_execution');
331 // Execute the controller method
332 $method->invokeArgs($controller, $arguments);
334 // Controller method has been executed
335 Event::run('system.post_controller');
337 // Stop the controller execution benchmark

SYSPATH/core/Event.php[ 210 ] » Kohana_Core::instance( arguments )

string(7) "modules"

array(1) (
0 => string(4) "save"

205 Event::$data =& $data;
206 $callbacks = Event::get($name);
208 foreach ($callbacks as $callback)
209 {
210 call_user_func_array($callback, array(&$data));
211 }
213 // Do this to prevent data from getting 'stuck'
214 $clear_data = '';
215 Event::$data =& $clear_data;

APPPATH/Bootstrap.php[ 67 ] » Event_Core::run( arguments )

object Admin_Controller(1) {
private theme => NULL

array(2) (
0 => string(7) "modules"
1 => array(1) (
0 => string(4) "save"

63// End system_initialization
66// Make the magic happen!
DOCROOT/index.php[ 90 ] » require( arguments )

string(61) "/home/birdznfl/public_html/gallery3/application/Bootstrap.php"

85if (file_exists("local.php")) {
86 include("local.php");
89// Initialize.
90require APPPATH . "Bootstrap" . EXT;

floridave's picture

perhaps you should start over with a git pull.

Blog & G2 || floridave - Gallery Team

Thanks Dave, Must have been a problem with the pull from last week, the pull from the 27th works fine, though the slideshow is not working, all else is fine...

slideshow error I get at the bottom of IE anytime I hit the slideshow Icon?

Webpage error details

User Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 1.1.4322; .NET CLR 3.0.30618; Media Center PC 5.0; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; SLCC1; Tablet PC 2.0)
Timestamp: Mon, 28 Dec 2009 06:49:18 UTC

Message: Syntax error
Line: 1
Char: 31
Code: 0

floridave's picture

Start a new thread and I can assist if you can edit the DB manually using phpMyAdmin or similar.

Blog & G2 || floridave - Gallery Team

Thanks Dave, I do have full control over my phpMA and my databases. where should I start the new thread ..

nivekiam's picture

Armani2, in one of these 2 forums:
Like Gallery? Like the support? Donate now!!! See G2 live here

I need some serious help!! Can someone help me with installing the registration module? I have tried like 5 times and can't get it to work, email:

First I must apologize for not responding to testing earlier.
I first reported this problem after upgrading to Beta 2. After upgrading to Beta 3, I am still experiencing the same problem. I can't find the original post, but I am pretty sure I did everything requested.

A directory of images are not visible. What shows up is the file name but no image. I have tried running all the maintenance options. I don't see anything in the logs, which indicates what the problem is. The images were visible in Beta 1

I can give someone full access if this would help. Just let me know who to contact with access.

@plnnightsky: when you say "upgrading to Beta 3", do you mean the beta 3 zip file or the latest from github. You should probably get the latest code and follow these instructions if you haven't already.

When trying a brand-new install of Beta 3, I got an error configuring the database that said "The used table type doesn't support FULLTEXT indexes".

Only the MyISAM engine supports FULLTEXT indexes, so I fixed the problem by modifying the install.sql file.

I changed line 281 from:




nivekiam's picture
When trying a brand-new install of Beta 3

Upgrade to the latest experimental code:
FAQ: How to upgrade Gallery2?
Like Gallery? Like the support? Donate now!!! See G2 live here

agarg's picture

Great work guys!

Anil Garg
My Picture Gallery

bluetickle's picture


Gallery has come a long way! I still remember struggling endlessly with Gallery versions 1 and 2.

I just setup Gallery 3 beta 3 and I am so impressed!

Excellent work!!!

It's amazing how good it feels when it "just works" and is simple and easy!

p.s. can someone point me in the direction of where I can find a blackish background theme...

update - this theme is amazing -

Delete Photo from the context photos menu defaults to "delete". This invalidates the safty question . It schould default to cancel.

hebhansen's picture


Copying a thumb to another album, so that it is featured more places and running from the same "large" file.

- Save upload time
- Save HD on server

When deleting a file, Gallery should prompt if the file is featured elsewhere....

all the best
HB -

Hope, just hope, the ticket #969 in Trac can be solved soon. I also found the problem on last month. New or updated modules, such as Import Gallery2, RESTful, etc. were already in source tree. I can't do the translation before the issue fix. Thank you.

UPDATE: (Jan 15) I've done and submitted Traditional Chinese translation. Thank you to fix the issue so quickly.

Порадовала очень простая установка! Загрузка фотографий тоже радует глаз. А есть ли русификация для Gallery3 ?

С русским языком разобрался. Не открывается созданный альбом. Этот альбом не пуст, с фотками, но всё равно не открывается. Кто-нибудь сталкивался с такой проблемой?

Haven't checked out G3 in a while, and it's looking great.

One inconsistency I see is activating changes. For example, to accept/change themes, one clicks in the upper left corner. But to accept changes in modules you click on the bottom left. This is additionally confusing because if you click some changes in Modules (but don't remember to click in the lower left), and go to the upper left and click "go back to gallery", the things you checked aren't activated. A warning that your changes won't take effect would be nice.

These are nits, but a consistent GUI is useful. And since this version has been developed for the masses, preventing making mistakes is helpful too. My 2 cents worth.

deleted and moved to forum

How do I enable it for users to register...?

Cant find it anywhere in the settings :-) Isnt the module ready for this...?

Very excited about the progress so far with G3!
I have been digging around looking for a G3 virtualized appliance, jumpbox, etc... to test out, but haven't seen one yet. Does anyone know of one of these that is available for download? Since it is still beta, I didn't expect to find one, but thought I would ask here just in case someone else had come across one.

floridave's picture
Isnt the module ready for this...?


Blog & G2 || floridave - Gallery Team

Well, I had gallery3 beta3 (version from mid november) working nicely but had to change servers recently. What I did was get the latest code from git and installed gallery but I'm constantly being hit by "Disallowed key characters in global data." message as soon as I complete the setup and proceed to using gallery. I've searched the web and found that this was an issue and that git code was patched for this and nobody seems to have reported it fairly recently.

Any help would be greatly appreciated. I've been stuck with install/reinstall cycle for past couple of weeks with no respite.

Thanks in advance.

BTW, I'm using Slackware 13.0, Apache 2.2.11 and PHP 5.2.11. This same setup worked flawlessly on my old server.

Suggestion for Gallery 3.

I hacked the exif data so it can be placed in the Photo Info Section when looking at a photo instead of have the link for the exif data at the bottom of the page.

It would be nice (makes sense) to have the exif link in this location, as it is technically part of the Photo Info.

Thank you for the consideration.


nivekiam's picture

Josh, a link to see your change would be nice :)
Like Gallery? Like the support? Donate now!!! See G2 live here