The simplest, most intuitive way to host your photos on your website.

Overview

Gallery 3.1+ (development version)

About

Gallery 3 is a web based software product that lets you manage your photos on your own website. You must have your own website with PHP and database support in order to install and use it. With Gallery you can easily create and share albums of photos via an intuitive interface.

Intended Audience

This version is intended for anybody who has a website. We stand ready to support the product and help you to make the most of it. We welcome theme and module developers to play with this release and start turning out slick new designs for our happy users. If you have questions or problems, you can get help in the Gallery forums:

https://groups.google.com/forum/#!forum/gallery-3-users

Security

Did you find a security flaw? Please submit an issue in github: https://github.com/bwdutton/gallery3/issues

Supported Configuration

  • Platform: Linux / Unix.
  • Web server: Apache 2.2 and newer.
  • PHP 7.0 and newer (PHP's safe_mode must be disabled and simplexml, filter, and json must be installed).
  • short_open_tag isn't required but additional modules and themes may rely on it.
  • Database: MySQL 5 and newer.

For complete system requirements, please refer to:

http://codex.galleryproject.org/Gallery3:Requirements

Installing and Upgrading Instructions

NOTE: When upgrading from PHP 5 to PHP 7 you will need to change the database type from mysql to mysqli in var/database.php:

$config['default'] = array(
  'benchmark'     => false,
  'persistent'    => false,
  'connection'    => array(
    'type'     => 'mysqli',

For docker installations:

https://hub.docker.com/r/bwdutton/gallery3

For comprehensive instructions, The online User Guide is your best resource:

http://codex.galleryproject.org/Gallery3:User_guide

There are also simple instructions below. NOTE: You can upgrade from beta 1 and beyond, but not from alpha releases.

Installation via the web

Point your web browser at gallery3/installer/ and follow the instructions.

Installation from the command line

php installer/index.php [-h host] [-u user] [-p pass] [-d dbname]

Command line parameters:

 -h     Database host          (default: localhost)
 -u     Database user          (default: root)
 -p     Database user password (default: )
 -d     Database name          (default: gallery3)
 -x     Table prefix           (default: )

Optional dependencies

Install composer dependencies to make all of the modules work (currently autorotate, phpmailer).

composer install

Bugs, Questions, Problems?

Forgot your password? Use the command line:

php index.php passwordreset <username>
Comments
  • We tried really hard, but it's broken

    We tried really hard, but it's broken

    Clean install, successfully, got initial admin user password, tried to login and: We tried really hard, but it's broken.

    Talk to your Gallery administrator for help fixing this!

    And in gallery logs: 2020-09-16 09:35:18 +00:00 --- error: date.timezone setting not detected in /etc /php/7.0/apache2/php.ini falling back to UTC. Consult http://php.net/manual/fun ction.get-cfg-var.php for help. 2020-09-16 09:35:25 +00:00 --- error: Kohana_Exception [ 403 ]: @todo FORBIDDEN /var/www/html/galerii/modules/gallery/helpers/access.php [ 202 ] #0 /var/www/html/galerii/modules/gallery/helpers/access.php(425): access_Core::f orbidden() #1 /var/www/html/galerii/modules/gallery/controllers/login.php(31): access_Core: :verify_csrf() #2 [internal function]: Login_Controller->auth_ajax() #3 /var/www/html/galerii/system/core/Kohana.php(331): ReflectionMethod->invokeAr gs(Object(Login_Controller), Array) #4 /var/www/html/galerii/system/core/Event.php(208): Kohana_Core::instance(NULL) #5 /var/www/html/galerii/application/Bootstrap.php(67): Event_Core::run('system. execute') #6 /var/www/html/galerii/index.php(123): require('/var/www/html/g...') #7 {main} 2020-09-16 09:35:25 +00:00 --- error: Missing messages entry kohana/core.errors. 403 for message kohana/core

    opened by Karel4 22
  • Admin interface: Broken UX when going to the next page of messages

    Admin interface: Broken UX when going to the next page of messages

    I have just upgraded to the master and I have the following behaviour. I have many messages to be approved

    Selection_010

    When I click on next page, the UX breaks like this:

    Selection_011

    Let me know if I can provide more information, logs, etc.

    The same happens when I click to empty the entire spam:

    Selection_013

    opened by stefanofornari 6
  • Multilingual support

    Multilingual support

    Hi there. I'm interested in modifying the source code, but are there any section to support non-English languages on the interfaces right now? I'm sorry that I'm really not good at programming, but I want you to ask whether there are something to support multilanguages and how should I do to enable it.

    opened by vyteking 4
  • Import from Gallery 2 @todo G2_FUNCTION_FAILED

    Import from Gallery 2 @todo G2_FUNCTION_FAILED

    Hi. I'm trying to import an old g2 site because my shared hosting is taking away the ancient version of php (5.6 I think) it depends on.

    I grabbed g3 from git today and checked out the 3.1.2 tag. I set up the gallery 2 import module and tried to run it. When I pointed it at my old installation's file path, it saw my files but couldn't sort out the version.

    Screen Shot 2020-04-21 at 4 19 03 PM

    opened by sagotsky 4
  • Forced Secure HTTPS Gallery3 issues

    Forced Secure HTTPS Gallery3 issues

     * Gallery3 Version 3.1.2 (Code name Revival) from March 1st 2020
     * Server: Linux 5.3.0-26-generic / Apache / PHP: 7.3.17
     * MySQL: 10.3.21-MariaDB
     * Graphics toolkit: gd
     * Forced htaccess redirect to HTTPS
     * Browser 1: Firefox Version 75.0 (64-bit)
     * Browser 2: Chromium Version 80.0.3987.163 (Official version 64-bit) 
    

    Notify author

    @bwdutton

    Issue

    When browsing a fresh default install of Gallery3 on a Web Host with the above configuration and forced HTTPS, some pages does not load for me, after a short while a Secure Connection Fail or Web Site Unaccessable Error Message appear (PR_END_OF_FILE_ERROR in Firefox and ERR_CONNECTION_CLOSED in Chrome). The URL field show an inserted extra ":80" after the host name, like "https://g3demo.sajtverkstan.net:80/index.php/demo". A workaround is to manually edit and remove :80 from the URL and hit enter to access the page not loading.

    Example of Gallery functions not working as decribed above is:

    1. Clicking on a Random image in the Sidebar
    2. Inside an Album browsing Images, clicking on links in the Navigation Album Directory Breadcrumb above the image and previous/next buttons
    3. Some functions in the Gallery Admin area

    Steps to reproduce

    1. On a Web Host with the configuration above, upload the Gallery3 files in the correct server directory.

    2. Edit the .htaccess file located in the Gallery3 root directory and add:

    #Rewrite everything to https
    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    
    1. Install Gallery3 by going to the Installer URL and enter the correct MySQL information, proceed and create a album, upload images, activate the Image block module.

    2. Go to the Gallery page and click on a Random image, or go into a gallery album and click on links in Navigation Breadcrubs, or try the Admin pages click on Check now.

    Expected behaviour

    It would be nice if all functions worked using secure HTTPS on a web host with a common configuration like above.

    Other information

    The above example is accessable on https://g3demo.sajtverkstan.net and is hosted at One.com

    Thank you so much for all the great work done for the revival of Gallery3 this far! :-)

    opened by jorgenqv 3
  • I18n Fatal error

    I18n Fatal error

    Hi,

    i am installed the gallery on the webserver, with php 7.4.

    But, when I try to access the website, i am getting this error:

    Fatal error: Uncaught Error: Call to private I18n_Core::__construct() from context 'Kohana_Core' in xxx/system/core/Kohana.php:141 Stack trace: #0 xxxapplication/Bootstrap.php(49): Kohana_Core::setup() #1 xxx/index.php(123): require('xxx/g...') #2 {main} thrown in xxxx/system/core/Kohana.php on line 141

    I think it can be a problem with reflection. Anyone can help me?

    opened by caiovncius 2
  • gallery2_import Fails

    gallery2_import Fails

    I am excited to see that gallery is being supported again. I have an old gallery2 installation (version 2.3.2) that stopped working years ago following an upgrade of php on on of our web servers. I have setup a pod using galley3-docker (bwdutton/gallery3), mysql and phpmyadmin containers. I setup bind mounts to the old gallery2 and g2data folders at the root (/gallery2, /g2data) of the gallery3 container. I was able to successfully load the old mysql database in parallel to the gallery3 database that was installed following the installation of gallery3. Everything seems to be running properly. I can login as admin and install the gallery2_import module.

    However, when I start the import using /gallery2/embed.php I receive the following error: Platform information Host name: eec75ae3fd06 Operating system: Linux 5.10.60.1-microsoft-standard-WSL2 Apache: Apache/2.4.48 (Ubuntu) PHP: 8.0.8 MySQL: 10.7.3-MariaDB-1:10.7.3+maria~focal Server load: 0.06 0.19 0.24 Graphics toolkit: imagemagick

    Gallery stats Version: 3.0+ (branch master, build 434) Albums: 0 Photos: 0

    Error [ 0 ]: Non-static method GalleryDataCache::put() cannot be called statically

    DOCROOT/var/modules/g2_import/37cea4e45532b49a20d1ce685aa93655/embed.php[ 33 ]

    28 * @version $Revision: 17657 $ 29 / 30 31/ Define G2_EMBED = 1 to remember to generate correct URLs and return the HTML, etc. */ 32require_once('/gallery2/modules/core/classes/GalleryDataCache.class'); 33GalleryDataCache::put('G2_EMBED', 1, true); 34require(dirname(FILE) . '/main.php'); 35require('/gallery2/modules/core/classes/GalleryEmbed.class'); 36 37GalleryEmbed::getEmbedPathByHttpRequest(); 38?>

    Any ideas on how to import gallery2 successfully?

    opened by keramsey 1
  • Drop modules from discontinued services or urls

    Drop modules from discontinued services or urls

    I know that this is cross-repository issue, but it may affects a normal installation since usually broke the functionality and add some urls that can be hijacked. Here and in contrib (c) there are some discontinued services:

    And other external URI are gone:

    This is an incomplete list, please note that this list can be different to obsolete modules, even if those may be treated the same way.

    A cleanup can be applied in different ways:

    • blacklisting modules using an enabled-on-installation core module or setting on gallery3
    • removing from core or contrib from the forked repo

    This issue may remain open to list other elements with broken urls or services.

    opened by chirale 1
  • upload error on upload when jhead Autorotation module is on

    upload error on upload when jhead Autorotation module is on

    Enabling jhead Autorotation module always broken the upload, red icon appears on legacy uploader. Anyway, file is uploaded but something goes wrong on auto-rotation. Test was done with images that doesn't need to be rotated.

    Disabling the module fix the issue.

    opened by chirale 1
  • fix ffmpeg time string for non-english locales

    fix ffmpeg time string for non-english locales

    currently the use of ffmpeg failed on php environments with non-english locale, because the time formatting function used to pass time parameters to ffmpeg uses locale-dependent formatting.

    This PR replaces the locale dependent %f with the locale independent %F to make it work on all systems, independent from the configured locale (cause ffmpeg expects the time in the same format always for all locales).

    This requires PHP 5.0.3 at least according to the documentation: https://www.php.net/manual/en/function.sprintf.php But that version is very old by now anyways.

    opened by swurzinger 0
  • Challenges with purifier module and HTMLPurifier

    Challenges with purifier module and HTMLPurifier

    I had challenges getting gallery3 (galleryrevival) working due to the purifier module.

    I ended up just removing the gallery3/modules/purifier directory and got it working. I thought I'd report it here in case it is an actual problem.

    I followed the steps in the Dockerfile to integrate the gallery3-contrib modules and themes into the installation.

    When I run gallery3 though, visiting the site produces this error in the logs

    2022-12-03 23:34:24 -08:00 --- error: Error [ 0 ]: Class "HTMLPurifier_Config" not found
    /config/gallery3/modules/purifier/helpers/purifier.php [ 24 ]
    #0 /config/gallery3/modules/gallery/libraries/SafeString.php(157): purifier::purify()
    #1 /config/gallery3/modules/gallery/libraries/SafeString.php(56): SafeString_Core::_purify_for_html()
    #2 /config/gallery3/modules/gallery/helpers/MY_html.php(46): SafeString_Core::purify()
    #3 /config/gallery3/themes/wind/views/page.html.php(13): html::purify()
    #4 /config/gallery3/system/libraries/View.php(318): include('...')
    #5 /config/gallery3/system/libraries/View.php(260): View_Core->load_view()
    #6 /config/gallery3/modules/gallery/libraries/MY_View.php(75): View_Core->render()
    #7 /config/gallery3/system/libraries/View.php(226): View->render()
    #8 /config/gallery3/modules/gallery/controllers/albums.php(77): View_Core->__toString()
    #9 /config/gallery3/modules/gallery/controllers/albums.php(22): Albums_Controller->show()
    #10 [internal function]: Albums_Controller->index()
    #11 /config/gallery3/system/core/Kohana.php(302): ReflectionMethod->invokeArgs()
    #12 /config/gallery3/system/core/Event.php(208): Kohana_Core::instance()
    #13 /config/gallery3/application/Bootstrap.php(67): Event_Core::run()
    #14 /config/gallery3/index.php(124): require('...')
    #15 {main}
    

    I tried working around this based on this note in the module.info

    Enable XSS protection using HTMLPurifier; add ezyang/htmlpurifier: ^4.13 to composer.json and run composer update

    By adding it to composer.json and installing it.

    This didn't resolve the error for me though.

    7 also tried copying the vendored HTMLPurifier from the original gallery3-contribs into the gallery3/modules/purifier/vendor directory. This also didn't work for me.

    Finally I tried extracting the standalone package of HTMLPurifier into the gallery3/vendor directory. But I gave up on trying to figure out how to get autoload.php to load in this standalone package.

    opened by gene1wood 0
  • Commit #e3dc6b0 breaks full size image viewing

    Commit #e3dc6b0 breaks full size image viewing

    Hi. I couldn't view full size images in my gallery. There's a google discussion about it so I'm not alone.

    Commit # e3dc6b0 is titled "handle full URL comparison better for proxy access checks" This is an edit to modules/gallery/controllers/file_proxy.php

    Line 49 of the file seems to be the problem. $compare_uri = url::file(ltrim($request_uri,'/'));

    this changes the url being checked gallery/var/albums/whatever.jpg into gallery/gallery/var/albums/whatever.jpg

    And then it throws an exception because the path doesn't start with gallery/var

    When logged in as an admin I tried to directly access a full size image url and received a gallery page fairly well describing the exception that was thrown.

    It's not clear what this commit was meant to fix. Maybe a "proxy access" uses a different request_uri that lacks a leading "gallery/" prefix? Maybe it was only meant to clean up a request with a leading slash. (RewriteBase / )

    My solution was to set compare_uri = $request_uri; (or just revert this whole commit)

    Regards, Sean

    opened by Seanst3r 0
  • Feature req: error message from installer if mbstring not installed

    Feature req: error message from installer if mbstring not installed

    I'm upgrading an old, non-working Gallery 2 installation to Gallery 3 (3.1.5).

    If certain php extensions are missing, the installer (at /index.php) will render an error document listing what's missing. See attached screenshot below.

    This doesn't work for mbstring. If mbstring is missing, /index.php returns a 500 server error header with no document, and nothing is logged to the error log. It's not easy to figure out what's causing the error since there are no clues as to what's wrong.

    (I believe that since the index.php document has error_reporting(0); and ini_set("display_errors", false); in it, that's why I was seeing an empty error page and nothing in the Apache error log. Disabling these lines made an error message appear that clearly said that mbstring was missing.)

    The feature request is: detect whether mbstring is missing and print some kind of error message saying so, ideally in the same style as the screenshot. If that's not easy, just putting something in the error log saying "The mbstring PHP extension is not installed and it is necessary so please install it now" would be helpful.


    Screen Shot of nice error message

    opened by JamieFlournoy 0
  • Slight config change for those using nginx and getting erratic /index.php/ file paths

    Slight config change for those using nginx and getting erratic /index.php/ file paths

    Gallery3 users are mostly Apache-bound, but the underlying framework, Kohana 2, even though it's ancient, supports nginx as well. A working nginx configuration for Galery3 has already been developed by @jonmiller and is described on #8.

    I'm not quite sure where such a configuration file ought to be placed, so that nginx users are able to find it; perhaps some day the Gallery3 wiki is available in some form again, and becomes editable once more, thus allowing the corrected nginx configuration to be placed there...

    There is, however, a catch, which Jon Miller has found and fixed: the configuration file on ./application/config/config.php needs to have:

    $config["index_page"]="";
    

    I keep forgetting to change that :-) so I'm submitting a PR where this option is in the configuration file, but commented out by default, with a small note to potential nginx users to remove it. As said, in the future, hopefully we can place such notes and comments to an official online 'manual' for Gallery3.

    The changes made to .gitignore are essentially to clean up the garbage generated by developing under macOS :-P

    See also the discussion around the nginx configuration (and lots of personal rants...) on https://groups.google.com/g/gallery-3-users/c/7DXCw2slny8/m/UruqyKymAgAJ

    Caveat utilitor: this PR does not fix everything for nginx installations! Like Apache installations, nginx varies a lot from system to system, and may or may not be fully configurable on hosted environments. I use Gallery3 on my own self-compiled nginx on a 'bare metal' server, which means I've got full access to every little aspect on my system, and I'm therefore able to get Gallery3 running flawlessly on my environment. YMMV.

    Potentially closes #8.

    opened by GwynethLlewelyn 0
  • gallery 3 admin page not working?

    gallery 3 admin page not working?

    Kohana_Exception [ Framework Error ]: The requested views, admin.html, could not be found

    SYSPATH/core/Kohana.php[ 781 ]

    776 if ($found === NULL) 777 { 778 if ($required === TRUE) 779 { 780 // If the file is required, throw an exception 781 throw new Kohana_Exception('The requested :resource:, :file:, could not be found', array(':resource:' => __($directory), ':file:' =>$filename)); 782 } 783 else 784 { 785 // Nothing was found, return FALSE 786 $found = FALSE; SYSPATH/libraries/View.php[ 83 ] » Kohana_Core::find_file( arguments )

    SYSPATH/libraries/View.php[ 49 ] » View_Core->set_filename( arguments )

    MODPATH/gallery/libraries/MY_View.php[ 62 ] » View_Core->__construct( arguments )

    MODPATH/gallery/libraries/Admin_View.php[ 30 ] » View->__construct( arguments )

    MODPATH/user/controllers/admin_users.php[ 22 ] » Admin_View_Core->__construct( arguments )

    MODPATH/gallery/controllers/admin.php[ 62 ] » Admin_Users_Controller->index()

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

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

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

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

    DOCROOT/index.php[ 124 ] » require( arguments )

    opened by indianscorpion 2
Releases(3.1.5)
  • 3.1.5(Nov 14, 2021)

  • 3.1.3(Jun 4, 2020)

    This release has:

    • more PHP 7 compatibility changes
    • a new phpmailer module to send email via SMTP
    • a password reset feature via the command line
    • a configuration check for outdated mysql usage if you are using PHP 7. You will see a message to update your config file. This should catch problems with upgrading.
    Source code(tar.gz)
    Source code(zip)
A great looking and easy-to-use photo-management-system you can run on your server, to manage and share photos.

Lychee A great looking and easy-to-use photo-management-system. Since the 1st of April 2018 this project has moved to it's own Organisation (https://g

Tobias Reich 6.2k Jan 5, 2023
Web app to share your favorite photos, made with laravel

Kuro Photos Web app to share your favorite photos, made with laravel. This web app was made for educationals purposes only. I enjoyed so much learning

Julian Salcedo Torres 4 Dec 29, 2022
MixPanel for Laravel - Intuitive drop-in analytics.

MixPanel for Laravel Sponsors We like to thank the following sponsors for their generosity. Please take a moment to check them out. LIX Features Async

GeneaLabs, LLC 105 Dec 10, 2022
A simple, intuitive, yet powerful password manager.

Poziomy zabezpieczeń Brak zabezpieczeń Kod jest widoczny bez konieczności podejmowania żadnej akcji. Nie jest szyfrowany. Można udostępniać. Niski poz

Burda Kacper 1 Feb 4, 2022
A dumb sharing site for photos and videos, made by me, using a bit of borrowed code.

ShitShare A dumb sharing site for photos and videos, made by me, using a bit of borrowed code. Information This was made on Windows, so when video upl

null 1 Dec 14, 2022
BicBucStriim streams books, digital books. It fills a gap in the functionality of current NAS devices that provide access to music, videos and photos

BicBucStriim streams books, digital books. It fills a gap in the functionality of current NAS devices that provide access to music, videos and photos -- but not books. BicBucStriim fills this gap and provides web-based access to your e-book collection.

Rainer Volz 392 Dec 31, 2022
This is a Task Manager system for managing your task. You can categorize your tasks and upload music to the project And a whole host of other features

taskManager Login and register Each user can have their own task Categorize tasks by creating folders Edit and Delete Folders Search for Tasks Show nu

masoudharooni 11 May 22, 2022
Easily self host your documentation.

Docs for Laravel Generate docs for your projects Support us Like our work? You can support us by purchasing one of our products. Installation WIP, do

Flowframe 6 Oct 31, 2022
Our team created for you one of the most innovative CRM systems that supports mainly business processes and allows for customization according to your needs. Be ahead of your competition and implement YetiForce!

We design an innovative CRM system that is dedicated for large and medium sized companies. We dedicate it to everyone who values open source software,

YetiForce Sp. z o.o. 1.3k Jan 8, 2023
The most popular FOSS online survey tool on the web.

Sophisticated online survey software About Limesurvey is the number one open-source survey software. Advanced features like branching and multiple que

LimeSurvey GmbH 2.2k Dec 29, 2022
eLabFTW is the most popular open source electronic lab notebook for research labs.

A free, modern, versatile, secure electronic lab notebook for researchers Official website | Live demo | Documentation | Dedicated hosting Description

elabftw 685 Jan 4, 2023
Most advanced Anti-VPN plugin for PocketMine-MP

VPNProtect Are banned players joining back on different IPs each time and you have no idea how to stop them? Have you been tired of constantly needing

MagicGames 9 Aug 4, 2022
Engintron for cPanel/WHM is the easiest way to integrate Nginx on your cPanel/WHM server.

Engintron for cPanel/WHM is the easiest way to integrate Nginx on your cPanel/WHM server. Engintron will improve the performance & web serving capacity of your server, while reducing CPU/RAM load at the same time. It does that by installing & configuring the popular Nginx webserver to act as a reverse caching proxy for static files (like CSS, JS, images etc.) with an additional micro-cache layer to significantly improve performance of dynamic content generated by CMSs like WordPress, Joomla or Drupal as well as forum software like vBulletin, phpBB, SMF or e-commerce solutions like Magento, OpenCart, PrestaShop and others.

Engintron 632 Dec 14, 2022
Now Introducing a new and easy way to manage your clients and MyOwnFreeHost hosting accounts.

Warning This is a beta version of Xera. Use it for testing purpose only. You are be responsible for any loss or damages that may occor from using this

Mahtab Hassan 23 Dec 15, 2022
A simple wrapper for PHP Intervention Library to provide a more simple interface and convenient way to convert images to webp

This package is a simple wrapper for PHP Intervention Library to provide a more simple interface and convenient way to convert images to webp - next generation format - extension, and resize them to render only needed sizes.

eyad hamza 18 Jun 28, 2022
Handle all the hard stuff related to EU MOSS tax/vat regulations, the way it should be.

Handle all the hard stuff related to EU MOSS tax/vat regulations, the way it should be.

Dries Vints 1.1k Jan 1, 2023
This Laracast Blog is built with Laravel 8.x taught by Jeffery Way on Laracasts

This Laracast Blog is built with Laravel 8.x taught by Jeffery Way on Laracasts. I followed his tutorial videos and added new features as he mentioned on his Github.

Wai Yan Kyaw 1 Dec 7, 2021
Unified sample web app. The easy way to learn web frameworks.

Notejam The easy way to learn web frameworks Do you know framework X and want to try framework Y? The easy way to start with a new framework is to com

Sergey Komar 1.1k Dec 21, 2022
Mini is a small Laravel application with 2 modules to go with the book Laravel: The Modular Way

Mini Mini is a small Laravel application with 2 modules to go with the book Laravel: The Modular Way Install Clone this repo git clone [email protected]:

David Carr 5 Dec 4, 2022