Manage your photos with Piwigo, a full featured open source photo gallery application for the web. Star us on Github! More than 200 plugins and themes available. Join us and contribute!

Overview

Piwigo logo

Manage your photo library. Piwigo is open source photo gallery software for the web. Designed for organisations, teams and individuals.

screenshot

The piwigo.org website introduces you to Piwigo. You'll find a demo, forums, wiki and news.

Requirements

  • A webserver (Apache or nginx recommended)
  • PHP 5.3 or greater (7+ recommended)
  • MySQL 5 or greater or MariaDB equivalent
  • ImageMagick (recommended) or PHP GD

Quick start install

NetInstall

More information

Manual

More information

If you do not have your own server, consider the piwigo.com hosting solution.

Contributing

Piwigo is widely driven by its community; if you want to improve the code, fork this repo and submit your changes to the master branch. See our Contribution guide.

License

Piwigo is released under the GPL v2 license. See our Copying details.

Comments
  • Initial work to support PHP 7.2

    Initial work to support PHP 7.2

    Fixes for create_function and each()

    See #812

    ##TODO

    • [x] Upgrade Smarty see https://github.com/smarty-php/smarty/pull/399
    • [x] Replace create_function (not done for mysql since not supported in PHP7)
    • [ ] Replace each()
    • [x] Upgrade cssmin with https://github.com/natxet/CssMin
    Type: Bug Section: Technical 
    opened by Infern1 37
  • Fix for action.php and corrupted image download

    Fix for action.php and corrupted image download

    My users where complaining, that downloaded images with download button, are corrupted (right click on image was fine). I've check all plugins and it came out, there is a problem in gallery core file. Pictures where downloaded, but file content was a complete garbage (it had noting to do with a file, except right size). After investigation, it looks like we need to "ob_clean — Clean (erase) the output buffer" and "flush — Flush system output buffer" before doing readfile(). This could be perhaps only something characteristic for my configuration (apache2.4.25, php5.6.26,Linux) but as far as I can see, those two commands are consider "recommended" for "readfile" (http://php.net/manual/en/function.readfile.php#81925) streaming, they fixed my problem, and they should not be harmful for others.

    opened by Saur0o0n 28
  • [MySQL 5.7] ORDER BY clause is not in SELECT list

    [MySQL 5.7] ORDER BY clause is not in SELECT list

    I get an error 3065 regardless of which ordering option I select in configuration. I narrowed it down to:

    mysql> SELECT DISTINCT(image_id) -> FROM piwigo_image_category -> INNER JOIN piwigo_images ON id = image_id -> WHERE -> category_id = 6178 -> -> ORDER BY piwigo_images.file ASC; ERROR 3065 (HY000): Expression #1 of ORDER BY clause is not in SELECT list, references column 'piwigo.piwigo_images.file' which is not in SELECT list; this is incompatible with DISTINCT

    The above is from mysql - the browser reports a similar error. To get past this, I changed section_init.inc.php and added piwigo_images.file to the select line to force it for my site.

    SELECT DISTINCT(image_id),piwigo_images.file FROM '.IMAGE_CATEGORY_TABLE.' INNER JOIN '.IMAGES_TABLE.' ON id = image_id WHERE '.$where_sql.' '.$forbidden.' '.$conf['order_by'].' ;';

    Server version: 5.7.9 MySQL Community Server (GPL) Piwigo 2.7.4

    Type: Bug Section: Technical 
    opened by rp1428 28
  • JSON Error after updating to 2.8.6.

    JSON Error after updating to 2.8.6.

    Hi, after updating to 2.8.6 I get an error when I use the user-manager "DataTables warning (table id = 'userList'): DataTables warning: JSON data from server could not be parsed. This is caused by a JSON formatting error"

    What´s wrong?

    best regards Jörg

    Type: Question 
    opened by mcinternet 21
  • ssl reverse proxy

    ssl reverse proxy

    Hello,

    In case of reverse proxy SSL, lot function doesn't work properly. To fix it, I applied these change in ./include/functions_url.inc.php function get_absolute_root_url

    Detect SSL :

        if (isset($_SERVER['HTTPS']) &&
          ((strtolower($_SERVER['HTTPS']) == 'on') or ($_SERVER['HTTPS'] == 1)))
        {
          $is_https = true;
          $url .= 'https://';
        }
    

    to

        if (isset($_SERVER['HTTPS']) && ((strtolower($_SERVER['HTTPS']) == 'on') or ($_SERVER['HTTPS'] == 1)) or ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'))
        {
          $is_https = true;
          $url .= 'https://';
        }
    
    

    AND ignore port change in this case:

    
          if ( (!$is_https && $_SERVER['SERVER_PORT'] != 80)
                ||($is_https && $_SERVER['SERVER_PORT'] != 443))
          {
    
    
    
     if ( ((!$is_https && $_SERVER['SERVER_PORT'] != 80)
                ||($is_https && $_SERVER['SERVER_PORT'] != 443)) && (!$_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'))
          {
    
    

    Regards,

    Thomas.

    Section: Technical 
    opened by ThomasGsp 19
  • Missing parameters: pwg_token when adding new users - Piwigo 12.2.0

    Missing parameters: pwg_token when adding new users - Piwigo 12.2.0

    I have on premise Piwigo server My environment is as follows: Piwigo 12.2.0 Operating system: Linux PHP: 7.4.26 MySQL: 5.5.5-10.3.28-MariaDB Graphics Library: ImageMagick 6.9.12-31

    Activated plugin list: Admin Tools Batch Downloader Community Extended Description Language Switch Look_like_gbo2 Show Photo Identifier Tag Access Management User Mass Register

    The issue is on the Manage users page. When adding a user the admin got Missing parameters: pwg_token. I've found that this occurs on interface in Polish language. With English it doesn't occurs. Please see attached screenshots.

    piwigo_161 piwigo_160

    Type: Bug Section: Users & Groups 
    opened by Krystian-Szaro-SSA 18
  • related albums shows forbidden albums

    related albums shows forbidden albums

    when on an album or a photo that appears in several albums including private albums to which the current user does not have access, the name of these albums is displayed and active in the "related albums" menu .

    The related album menu should not show album names to which the current user have no access.

    This poses a double problem for me:

    • security / confidentiality : a user or an anonymous visitor does not have to know the existence or the name of private albums to which he does not have access
    • ergonomics and use since, obviously, if I click on the name of this inaccessible album, I have nothing in my search, since I cross with an album which I do not do not have access to and I am afraid this will be very confusing for an unsuspecting user.

    piwigo 11.3.0

    Type: Bug Section: Security 
    opened by Pascaloub 17
  • Plugin pages redirect to port 80 on https connection

    Plugin pages redirect to port 80 on https connection

    I just setup a brand new Piwigo v2.9.0 on my web hosting. The site is configured with a Let's Encrypt SSL certificate, and everything works fine.

    Then I installed the Protected Albums, and got an error from the browser when opening a protected album, as shown in the 2 screenshots below

    selection_001 selection_002

    For some reason, Piwigo (I don't think it's the plugin itself, because the same behavior can be observed with other plugins as well) added port 80 to the https URL. Note that if I manually edit the URL to remove the port, then I can continue without further issues:

    selection_003

    opened by dregad 16
  • HHVM bug causes issues with piwigo

    HHVM bug causes issues with piwigo

    http://i.imgur.com/JRBGS3u.png This issue happens when using hhvm's fastcgi with nginx The proposed temp fix from hhvm is to replace all instances that try to retrieve upload_max_file_size with ini_get('hhvm.server.upload.upload_max_file_size');

    opened by belldandu 16
  • [security] Piwigo should use https for authentication

    [security] Piwigo should use https for authentication

    Reported by jeremyhu on 12 Jul 2012 01:36

    Version: 2.4.1

    If a user visits your site (http://mypiwigogallery.com) and registers for an account or logs in with the quickconnect form, their password will be sent unencrypted. Visitors must first manually edit the address in their browser's address bar (something I doubt more than 0.1% of visitors will do) in order to avoid this issue.

    I want visitors to be able to goto my site using http, but use https for authentication. This is also an issue because my SSL cert is self-signed, and I don't want casual visitors and guests to have to accept the self-signed cert

    Steps to reproduce: 1) Create a user account. 2) Feel insecure.

    Piwigo Bugtracker #2689

    Priority: High Misc: From Mantis 
    opened by plegall 15
  • Mobile album photo view in 13.1.0 not working anymore due to syntax error in footer.tpl in smartpocket theme (with PHP 7.x)

    Mobile album photo view in 13.1.0 not working anymore due to syntax error in footer.tpl in smartpocket theme (with PHP 7.x)

    Hello,

    i updated to 13.1.0 recently, but the photo view inside an album is not working anymore. Thrown error in GUI:

    Fatal error: Uncaught --> Smarty Compiler: Syntax error in template "file:/var/www/vhosts/xxxx/xxxx/themes/smartpocket/template/footer.tpl" on line 20 "document.cookie = 'screen_size='+jQuery(document).width()+'x'+jQuery(document).height()+';path={isset($COOKIE_PATH) ? $COOKIE_PATH : ''}';" - Unexpected " ? ", expected one of: "}" <-- thrown in /var/www/vhosts/xxxx/xxxxx/include/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php on line 20

    Standard view works fine. Albums are still listed on mobile, but when opening an album, no photos are shown and the error is listed at the bottom of the page

    opened by bigcookie 14
  • using 13.4 version of piwigo, nothing done for video

    using 13.4 version of piwigo, nothing done for video

    Hi, ################################## Env: Piwigo 13.4.0 Check for upgrade Installed on 10 November 2022, 1 month 2 weeks 5 days ago Operating system: Linux PHP: 7.4.33 (Show info) [2022-12-29 17:20:22] MySQL: 5.5.5-10.5.15-MariaDB-0+deb11u1 [2022-12-29 16:20:22] Graphics Library: External ImageMagick 6.9.11-60

    ffmpeg -version ffmpeg version 4.3.5-0+deb11u1+rpt2 Copyright (c) 2000-2022 the FFmpeg developers built with gcc 10 (Raspbian 10.2.1-6+rpi1) configuration: --prefix=/usr --extra-version=0+deb11u1+rpt2 --toolchain=hardened --incdir=/usr/include/arm-linux-gnueabihf --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-mmal --enable-neon --enable-rpi --enable-v4l2-request --enable-libudev --enable-epoxy --enable-pocketsphinx --enable-libdc1394 --enable-libdrm --enable-vout-drm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared --libdir=/usr/lib/arm-linux-gnueabihf --cpu=arm1176jzf-s --arch=arm libavutil 56. 51.100 / 56. 51.100 libavcodec 58. 91.100 / 58. 91.100 libavformat 58. 45.100 / 58. 45.100 libavdevice 58. 10.100 / 58. 10.100 libavfilter 7. 85.100 / 7. 85.100 libavresample 4. 0. 0 / 4. 0. 0 libswscale 5. 7.100 / 5. 7.100 libswresample 3. 7.100 / 3. 7.100 libpostproc 55. 7.100 / 55. 7.100

    mediainfo --version MediaInfo Command line, MediaInfoLib - v22.03 ################################## Two videos selected, "photos " > "Batch manager" > " Global mode" Action " Videos" "Thumbnail" checked "Apply actions" ################################## -results (see hereunder and screenshots attached) -displayed in red "You ask me to do nothing, are you sure?" -displayed in green"
    Array Array"

    • bunch of error lines: Warning: array_merge(): Expected parameter 1 to be an array, null given in /var/www/html/piwigo/plugins/piwigo-videojs/admin/admin_batchmanager.php on line 151

    Warning: array_merge(): Expected parameter 1 to be an array, null given in /var/www/html/piwigo/plugins/piwigo-videojs/admin/admin_batchmanager.php on line 176

    Notice: Trying to access array offset on value of type null in /var/www/html/piwigo/plugins/piwigo-videojs/include/function_dependencies.php on line 38

    Notice: Trying to access array offset on value of type null in /var/www/html/piwigo/plugins/piwigo-videojs/include/function_dependencies.php on line 38

    Notice: Trying to access array offset on value of type null in /var/www/html/piwigo/plugins/piwigo-videojs/include/function_dependencies.php on line 38

    Notice: Trying to access array offset on value of type null in /var/www/html/piwigo/plugins/piwigo-videojs/include/function_dependencies.php on line 38

    Notice: Trying to access array offset on value of type null in /var/www/html/piwigo/plugins/piwigo-videojs/include/function_sync2.php on line 52

    Notice: Trying to access array offset on value of type null in /var/www/html/piwigo/plugins/piwigo-videojs/include/function_sync2.php on line 52

    Notice: Trying to access array offset on value of type null in /var/www/html/piwigo/plugins/piwigo-videojs/include/function_sync2.php on line 52

    Notice: Trying to access array offset on value of type null in /var/www/html/piwigo/plugins/piwigo-videojs/include/function_sync2.php on line 77

    Notice: Trying to access array offset on value of type null in /var/www/html/piwigo/plugins/piwigo-videojs/include/function_sync2.php on line 84

    Notice: Trying to access array offset on value of type null in /var/www/html/piwigo/plugins/piwigo-videojs/include/function_sync2.php on line 112

    Notice: Trying to access array offset on value of type null in /var/www/html/piwigo/plugins/piwigo-videojs/include/function_sync2.php on line 202

    Notice: Trying to access array offset on value of type null in /var/www/html/piwigo/plugins/piwigo-videojs/include/function_sync2.php on line 77

    Notice: Trying to access array offset on value of type null in /var/www/html/piwigo/plugins/piwigo-videojs/include/function_sync2.php on line 84

    Notice: Trying to access array offset on value of type null in /var/www/html/piwigo/plugins/piwigo-videojs/include/function_sync2.php on line 112

    Notice: Trying to access array offset on value of type null in /var/www/html/piwigo/plugins/piwigo-videojs/include/function_sync2.php on line 202 ################################## Capture d’écran du 2022-12-28 16-22-06 Capture d’écran du 2022-12-28 16-13-31 Capture d’écran du 2022-12-28 16-13-14

    opened by Phil353556 1
  • A field to add a serious alt text to each photo

    A field to add a serious alt text to each photo

    Would it be possible to add an alt-text field to each photo? It would be nice if my blind friends could follow along as well.

    The alt attribute is used by people who depend on a screenreader. It reads out a description of what you can see on an image, if that description is provided.

    A description could be something like "A red cat on a news paper on a table". This is something else that the title of an image, which, in this case could be: "Go away, cat!" As you can see, the title has a different function than the alt-text. In this case they complement each other. And even now, where I didn’t provide the image of that cat, you can still imagine what it looks like. That’s the power of the alt-attribute.

    Right now, Piwigo uses the title field to fill the alt attribute. This means that the title will be read out twice if you use a screen reader. Once when you hear the alt attribute, and then again when the title is read out. Hearing your screenreader say something like "Image: Go away, cat! Title: Go away, cat!" is in no way comparable to "Image: A red cat on a newspaper on a table. Title: Go away, cat!"

    But it even gets a bit worse: if no title is added (which is by default), the alt text is the name of the image file, with its extension. Which in the above example where we see a red can on a table, would result in a blind person hearing "Image: DSC01790.JPG". This is not considered to be good UX since it really has nothing to do with a red cat on a newspaper on a table.

    It would therefore be fantastic if it was possible to add an extra alt-text field to the single image edit mode. When this alt-text-field is filled, it will show up in the alt-attribute, and when it is left empty, the alt attribute is left empty as well, which is better than filling it with the file name, or a redundant title. (it should be left empty, not removed. If you remove the alt attribute from the image, the file name will be read out…)

    It would then be very helpful for many people if a good explanation was added next to this field, so that people would start to use it properly. And yes, I have taught photographers who don’t know anything about the web about alt-text, and the all use it and they even like it (-:

    opened by vasilisvg 0
  • Generated schema files for the Piwigo Web API

    Generated schema files for the Piwigo Web API

    I'm interested in using the web api, but I wonder if there is any schema files or similar documentation?

    I've found the link to discover all methods (http://yourdomain/yourpiwigo/tools/ws.htm), but what I'm looking for is information that could be used to generate code. I'm thinking about writing some java services on top with help of the rest api and json, and it would be create to be able to automatically generate the classes to be used with the rest interface.

    opened by mingan666 0
  • [User Manager] Add filter informations

    [User Manager] Add filter informations

    We want to add a filter badge to keep track of the number of filters active and a little phrase to show how many users are filtered.

    • [x] Badge
    • [x] User filtered sentence
    opened by MatthieuLP 0
  • Since php 8.x -  question_mar / php_extension not working

    Since php 8.x - question_mar / php_extension not working

    $conf['question_mark_in_urls'] = false; $conf['php_extension_in_urls'] = false;

    .htaccess

    AcceptPathInfo On
    Options +MultiViews
    

    Since upgrading to php 8.x for PIWIGO 13.x the above options no longer work.

    For me this is a major issue, as all my sitemaps used this option, and of course, with it now broken if anyone searches on the web for my photography the link no loner works as / is.

    I did manage to get working a rather messy workaround that adds .php? to incoming URL, but I have not been able to generate a new sitemap, as hopefully this will get fixed in the future.

    opened by nigel-aves 0
Releases(13.4.0)
Owner
Piwigo
Piwigo is photo gallery software for the web, built by an active community of users and developers.
Piwigo
(Hard) Fork of WordPress Plugin Boilerplate, actively taking PRs and actively maintained. Following WordPress Coding Standards. With more features than the original.

Better WordPress Plugin Boilerplate This is a Hard Fork of the original WordPress Plugin Boilerplate. The Better WordPress Plugin Boilerplate actively

Beda Schmid 46 Dec 7, 2022
Aimeos is THE professional, full-featured and ultra fast e-commerce package for Laravel 5 and 6

Aimeos is THE professional, full-featured and ultra fast e-commerce package for Laravel 5 and 6! You can install it in your existing Laravel application within 5 minutes and can adapt, extend, overwrite and customize anything to your needs.

Aimeos 5.9k Jan 2, 2023
The repository for Coaster CMS (coastercms.org), a full featured, Laravel based Content Management System

The repository for Coaster CMS (coastercms.org) a Laravel based Content Management System with advanced features and Physical Web integration. Table o

Coaster CMS 392 Dec 23, 2022
A full-featured blog using Laravel 7.* & VueJS. Minimum library used

Blog Using Laravel 8 Let's keep it as simple as possible. Configure anything you want A full-featured blogging system for personal use.

Al Imran Ahmed 187 Sep 25, 2022
Coaster CMS a full featured, Laravel based Content Management System

The repository for Coaster CMS (coastercms.org) a Laravel based Content Management System with advanced features and Physical Web integration. Table o

Coaster CMS 392 Dec 23, 2022
YesWiki is a wiki system written in PHP, including extensions making collaboration more simple (databases, maps, easy editing, bootstrap themes,...).

YesWiki YesWiki is a Free Software under the AGPL licence, made for creating and managing your website, in a collaborative way. YesWiki allows any web

YesWiki 84 Dec 26, 2022
BaiCloud-cms is a powerful open source CMS that allows you to create professional websites and scalable web applications. Visit the project website for more information.

BaiCloud-cms About BaiCloud-cms is a powerful open source CMS that allows you to create professional websites and scalable web applications. Visit the

null 5 Aug 15, 2022
ExpressionEngine is a flexible, feature-rich, free open-source content management platform that empowers hundreds of thousands of individuals and organizations around the world to easily manage their web site.

ExpressionEngine CMS ExpressionEngine is a mature, flexible, secure, free open-source content management system. It is beloved by designers for giving

ExpressionEngine 412 Dec 27, 2022
Flextype is an open-source Hybrid Content Management System with the freedom of a headless CMS and with the full functionality of a traditional CMS

Flextype is an open-source Hybrid Content Management System with the freedom of a headless CMS and with the full functionality of a traditional CMS. Building this Content Management System, we focused on simplicity. To achieve this, we implemented a simple but powerful API's.

Flextype 524 Dec 30, 2022
Add subtitles into your WordPress posts, pages, custom post types, and themes. No coding required.

Add subtitles into your WordPress posts, pages, custom post types, and themes. No coding required. Simply activate Subtitles and you're ready to go.

We Cobble 117 Dec 31, 2022
Create WordPress themes with beautiful OOP code and the Twig Template Engine

Timber helps you create fully-customized WordPress themes faster with more sustainable code. With Timber, you write your HTML using the Twig Template Engine separate from your PHP files.

Timber 5.2k Dec 31, 2022
Boilerplate used to build nearly-headless WordPress themes

Boilerplate for Nearly Headless WordPress Themes This is a plugin boilerplate built using Underpin ,Nicholas, and AlpineJS. It will allow you to build

Nicholas 103 Dec 22, 2022
Typecho Themes,bestgril

bestgirl Typecho Themes,bestgirl主题 主题简介 bestgirl主题是一款简约风格的响应式轻主题,基于鹅厂熊大的出租本人创意域名展示页。 此主题适合日志、轻言、诗词、语录、格言、名句、条目、菜谱、记事本、大事记、回忆录等各种轻简短文字类网站。 主题预览 链接:http

null 38 Nov 14, 2022
Wrapping all composer vendor packages inside your own namespace. Intended for WordPress plugins

Wrapping all composer vendor packages inside your own namespace. Intended for WordPress plugins.

Typist Tech 93 Dec 17, 2022
phpReel is a free, MIT open-source subscription-based video streaming service that lets you create your platform for distributing video content in the form of movies or series.

phpReel is a free, MIT open-source subscription-based video streaming service that lets you create your platform for distributing video content in the form of movies or series.

null 118 Dec 14, 2022
DaybydayCRM an open-source CRM, to help you keep track of your daily workflow.

====================== DaybydayCRM is an everyday customer relationship management system (CRM) to help you keep track of your customers, tasks, appoi

Casper Bottelet 2.1k Dec 30, 2022
Plugin Vite is the conduit between Craft CMS plugins and Vite, with manifest.json & HMR support

Plugin Vite Related Articles: Vite.js Next Generation Frontend Tooling + Craft CMS A Vite Buildchain for Craft CMS Plugins Requirements Craft CMS 3.0.

nystudio107 8 Dec 30, 2022
Provides autocompletion for Craft CMS and plugins in Twig templates.

Autocomplete for Craft CMS Provides autocompletion for Craft CMS and plugins in Twig templates. Currently works with PhpStorm only, as VSCode does not

PutYourLightsOn 12 Nov 23, 2021
Simple personal website with your Github projects.

Setup Install dependencies: composer install npm install Copy .env.example file to .env: cp .env.example .env Generate application key: php artisan ke

Antonio Sarosi 15 Nov 23, 2022