nextcloud / gallery

DEPRECATED Gallery app was replaced by Photos
https://github.com/nextcloud/photos
GNU Affero General Public License v3.0
109 stars 58 forks source link

[14.2.0] "No pictures found" if root folder is read-only #112

Open oparoz opened 8 years ago

oparoz commented 8 years ago

From @cdamken on February 3, 2016 17:52

I added a lot of pictures in external storage. (SMB)

When I select the Gallery app it only shows: "No pictures found"

There is no message in the Log files (Apache or ownCloud)

The only message is on the web browser: "Unknown error (22) for smb://10.1.10.103/carlos/.nomedia (500)"

As workaround I add the file ".nomedia" in the user root user folder in the storage and then the Gallery app works!

Owncloud version: 8.2.2

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Copied from original issue: owncloud/gallery#504

oparoz commented 8 years ago

I don't fully understand how you've organised your file system and how things are mounted in ownCloud. Could you give me more details on that?

oparoz commented 8 years ago

From @cdamken on February 4, 2016 16:50

Sure @oparoz :

My server stack:

• Operating system (name and version number):

Ubuntu 14.04.3 LTS

• URL from your ownCloud https://cloud.damken.com/

• Your ownCloud availability: over internet

• Webserver (name and version number):

Server version: Apache/2.4.7 (Ubuntu)
Server built:   Oct 14 2015 14:20:21

• Apache modules enabled as declared in:

access_compat.load
auth_basic.load
authz_core.load
autoindex.conf
deflate.load
env.load
mime.conf
mpm_prefork.load
php5.conf
setenvif.conf
ssl.conf
status.load
alias.conf
authn_core.load
authz_host.load
autoindex.load
dir.conf
filter.load
mime.load
negotiation.conf
php5.load
setenvif.load
ssl.load
alias.load
authn_file.load
authz_user.load
deflate.conf
dir.load
headers.load
mpm_prefork.conf
negotiation.load
rewrite.load
socache_shmcb.load
status.conf

• Database (name and version number):

mysql  Ver 15.1 Distrib 5.5.46-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Connection id:          578875
Current database:
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server:                 MariaDB
Server version:         5.5.46-MariaDB-1ubuntu0.14.04.2 (Ubuntu)
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /var/run/mysqld/mysqld.sock
Uptime:                 22 days 7 hours 3 min 20 sec

Threads: 2  Questions: 176832246  Slow queries: 1  Opens: 159  Flush tables: 2  Open tables: 122  Queries per second avg: 91.803
--------------

• PHP (version number):

PHP 5.5.9-1ubuntu4.14 (cli) (built: Oct 28 2015 01:34:46)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
    with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies

• PHP cache manager

Package: redis-server
Status: install ok installed
Priority: optional
Section: database
Installed-Size: 744
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: amd64
Source: redis
Version: 2:2.8.4-2
Depends: libc6 (>= 2.14), libjemalloc1 (>= 2.1.1), redis-tools (= 2:2.8.4-2), adduser
Conffiles:
 /etc/default/redis-server 45e997df22f4c5c2b5c9ae159775a089
 /etc/redis/redis.conf e79ac99a5236e6ab3faf86bdd99affaf
 /etc/redis/sentinel.conf a95ae9b0242a03c5b4dd1af934478895
 /etc/init.d/redis-server 387b03762e0cf0db194e961104137b5a
 /etc/logrotate.d/redis-server 06755b99ef70d62a56cff94cbfc36de7
Description: Persistent key-value database with network interface
 Redis is a key-value database in a similar vein to memcache but the dataset
 is non-volatile. Redis additionally provides native support for atomically
 manipulating and querying data structures such as lists and sets.
 .
 The dataset is stored entirely in memory and periodically flushed to disk.
Original-Maintainer: Chris Lamb <lamby@debian.org>
Homepage: http://redis.io/

• PHP installed packages

libapache2-mod-php5 -> 5.5.9+dfsg-1ubuntu4.14
php-gettext -> 1.0.11-1
php-pear -> 5.5.9+dfsg-1ubuntu4.14
php5 -> 5.5.9+dfsg-1ubuntu4.14
php5-apcu -> 4.0.7-1build1~ubuntu14.04.1
php5-cgi -> 5.5.9+dfsg-1ubuntu4.14
php5-cli -> 5.5.9+dfsg-1ubuntu4.14
php5-common -> 5.5.9+dfsg-1ubuntu4.14
php5-curl -> 5.5.9+dfsg-1ubuntu4.14
php5-dev -> 5.5.9+dfsg-1ubuntu4.14
php5-gd -> 5.5.9+dfsg-1ubuntu4.14
php5-imagick -> 3.1.2-1build1
php5-intl -> 5.5.9+dfsg-1ubuntu4.14
php5-json -> 1.3.2-2build1
php5-libsmbclient -> 0.5.0-10.1
php5-mcrypt -> 5.4.6-0ubuntu5
php5-mysql -> 5.5.9+dfsg-1ubuntu4.14
php5-readline -> 5.5.9+dfsg-1ubuntu4.14
phpmyadmin -> 4:4.0.10-1
pkg-php-tools -> 1.11

• ownCloud Enterprise Server Version

{"installed":true,"maintenance":false,"version":"8.2.2.2","versionstring":"8.2.2","edition":""}

• Did you install your ownCloud with TAR files or packages? TAR

• Tell us your migration path of the ownCloud software 8.1.0.8 -> 8.1.3.0 -> 8.1.4 -> 8.2.2

• Do you have records from your migration steps? No

• List of owncloud-apps enabled/ in use:

Enabled:
  - activity: 2.1.3
  - bookmarks: 0.6
  - calendar: 0.8.1
  - contacts: 0.5.0.0
  - delete_confirmation: 1.1.0
  - direct_menu: 0.5
  - documents: 0.11.0
  - files: 1.2.0
  - files_external: 0.3.0
  - files_mv: 0.8.1a
  - files_pdfviewer: 0.7
  - files_sharing: 0.7.0
  - files_texteditor: 2.0
  - files_trashbin: 0.7.0
  - files_versions: 1.1.0
  - firstrunwizard: 1.1
  - gallery: 14.2.0
  - notifications: 0.1.0
  - ownnote: 1.05
  - provisioning_api: 0.3.0
  - registration: 0.1.0
  - sharelinks: 1.0.1
  - tasks: 0.8.1
  - templateeditor: 0.1
  - updater: 0.6

• The content of your config/config.php:

<?php
$CONFIG = array (
  'instanceid' => 'XXXXXX',
  'passwordsalt' => 'XXXXXX',
  'secret' => 'XXXXXX',
  'trusted_domains' =>
  array (
    0 => 'cloud.damken.com',
  ),
  'datadirectory' => '/mnt/owncloud/data',
  'dbtype' => 'mysql',
  'version' => '8.2.2.2',
  'dbname' => 'XXXXXX',
  'dbhost' => '127.0.0.1',
  'dbtableprefix' => 'oc_',
  'dbuser' => 'XXXXXX',
  'dbpassword' => 'XXXXXX',
  'loglevel' => 0,
  'logtimezone' => 'Europe/Berlin',
  'log_rotate_size' => 10485760,
  'installed' => true,
  'mail_smtpmode' => 'smtp',
  'mail_from_address' => 'XXXXXX',
  'mail_domain' => 'damken.com',
  'mail_smtpsecure' => 'XXXXXX',
  'mail_smtpauth' => 1,
  'mail_smtpauthtype' => 'XXXXXX',
  'mail_smtphost' => 'damken.com',
  'mail_smtpport' => 'XXXXXX',
  'mail_smtpname' => 'XXXXXX',
  'mail_smtppassword' => 'XXXXXX',
  'theme' => 'damken',
  'maintenance' => false,
  'appstoreenabled' => true,
  'appstoreurl' => 'https://api.owncloud.com/v1',
  'appstore.experimental.enabled' => true,
  'memcache.local' => '\\OC\\Memcache\\Redis',
  'filelocking.enabled' => 'true',
  'memcache.distributed' => '\\OC\\Memcache\\Redis',
  'memcache.locking' => '\\OC\\Memcache\\Redis',
  'redis' =>
  array (
    'host' => '127.0.0.1',
    'port' => 6379,
    'timeout' => 0,
    'dbindex' => 0,
  ),
  'trashbin_retention_obligation' => 'auto',
);

• Storage type and setup

NFS-> 
10.1.10.102:/mnt/md1/public/owncloud  /mnt/owncloud nfs soft,intr,rsize=8192,wsize=8192

• External storage type and setup capture1

oparoz commented 8 years ago

From @jsalatiel on February 6, 2016 13:54

Probably there are some corrupted picture avoiding gallery from complete the scan. The .nomedia is a GREAT feature that allows skip some folder and subfolder. I had this problem once and manually tracked down to be an specific corrupted jpeg.

oparoz commented 8 years ago

From @cdamken on February 6, 2016 14:2

Probably could be a picture broken, but putting a .nomedia as workaround is not a solution. The gallery app should handle wrong images and not every normal user should know how to workaround it.

oparoz commented 8 years ago

From @jsalatiel on February 6, 2016 14:5

I agree that gallery should not "break" on broken images. But you have to understand that the .nomedia is a feature (Actually it was me who sugestted =] ) ! It is a way to avoid some pictures from being shown on gallery. It works exactly like the android .nomedia file does =)

oparoz commented 8 years ago

Thanks for the information @cdamken. I'm not an enterprise user, so let's see if I got this right.

Regarding broken images which block rendering, I add fixes as I discover new issues. You can try Gallery+ to see if it makes it better as it has more fixes than the version which ships with 8.2.

oparoz commented 8 years ago

From @cdamken on February 7, 2016 0:35

Hi @oparoz my system is not enterprise either. I think I explain you that in Berlin.

the user root directory is in /mnt/owncloud/carlos/files (mouted over nfs) the user mounted a external storage over smb in a folder Ext-Sally (normal external storage app created by @icewind1991, its not enterprise app) when I select the gallery app, the gallery app provides the following error only in the browser: "Unknown error (22) for smb://10.1.10.103/carlos/.nomedia (500)" but it does not provides that to the owncloud.log.

There are to ways that it works: If I unmount the external storage (that I need because there is a lot of information) or if I create a file .nomedia file in the owncloud folder ( Ext-Sally/.nomedia) actually I'm the "user"

The same error happens with Gallery+ [14.3.0]

GET /index.php/apps/galleryplus/files/list?location=&mediatypes=image%2Fpng%3Bimage%2Fjpeg%3Bimage%2Fgif%3Bimage%2Fx-xbitmap%3Bimage%2Fbmp&features=&etag HTTP/1.1
Host: cloud.damken.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
requesttoken: HFsyHjtDFActAiU7GidpMQdMPBQ5LQwdHwkTOVcC:EkQnsvs5DVVIvtPvwtqzWaDIUQEOfl
OCS-APIREQUEST: true
X-Requested-With: XMLHttpRequest
Cookie: ocuhsyihz2sp=o7jhh5j5mseajgh6q101mp0035; oc_sessionPassphrase=Ci%2BvKu%2BvFbyCpWEjhKhi7M%2BVyMfGB2GFVHlOXM37bnEhuhiCF6jPHQEKQj%2BIzOf6C1PqkoezHqmwGaXzZn1fmI8JHA2aUaPMaK8MKJO50EOFDp2cCJDNx8pRVGaqBDKO
Connection: keep-alive
Cache-Control: max-age=0

The response from JSON is:

Unknown error (22) for smb://10.1.10.103/carlos/.nomedia (500)

btw, the .nomedia can be only added over ssh, over owncloud WebUI does not work

oparoz commented 8 years ago

From @cdamken on February 8, 2016 18:18

I agree that gallery should not "break" on broken images. But you have to understand that the .nomedia is a feature (Actually it was me who sugestted =] ) ! It is a way to avoid some pictures from being shown on gallery. It works exactly like the android .nomedia file does =)

@jsalatiel I don't understand well. please explain to me.

If the file does not exist, should show all the images. If the file exist should skip the folder and the below. Isn't it?

oparoz commented 8 years ago

From @cdamken on February 24, 2016 22:29

@oparoz Do you need some info? how can I help?

oparoz commented 8 years ago

Thanks for the information. I understand the setup better.

So, /Ext-Sally points to smb://10.1.10.103/carlos and is mounted via files_external which has previews enabled.

my system is not enterprise either

OK. That was a leftover from the template when you've given all the details above. And I got confused by the screenshot when comparing with the documentation (which uses FTP) :)

btw, the .nomedia can be only added over ssh, over owncloud WebUI does not work

To me, this indicates that there must be a permission problem. It could be specific to dot files.

It seems like Gallery is trying to see if a .nomedia file exist, but this crashes PHP (or one of its libraries) or the request is blocked.

This reminds me of what happens to some testers when testing some features affecting previews.

You should change the filesystem_check_changes setting in your mount.js or via files_external and set it to real time (2). And maybe you need to scan the volume first to make sure the cache has the appropriate information.

If the file does not exist, should show all the images. If the file exist should skip the folder and the below. Isn't it?

Yes. The problem is that any problem stops the whole process. This could be improved.

oparoz commented 8 years ago

From @cdamken on March 1, 2016 10:2

@oparoz Which info do you need? How can I help?

oparoz commented 8 years ago

@cdamken - I need you to try and fix your files permission problems via the files_external app and report back.

oparoz commented 8 years ago

From @cdamken on March 9, 2016 10:25

@oparoz Thanks I reported already

oparoz commented 8 years ago

:+1: