Impossible d'uploader un fichier via l'interface web

9.1.x

#1

Bonjour,

Indiquez la procédure suivie pour reproduire le problème:
1. Upload d'un fichier quelconque et de taille inférieur à la limite de base sur l'interface web owncloud

Comportement attendu:
Upload du fichier et visualation du nouveau fichier

Comportement actuel:
Erreur lors de l'envoi du fichier "nom_fichier" : Internal Server Error

Aucun fichier est uploadé
Par contre je peux créer un dossier ou un nouveau fichier sans problème
L'upload fonctionne via l'application cliente owncloud sur PC et via l'application Cirrius sur Android
Pas de logs particulier en rapport avec cette erreur

Configuration du serveur
Système d'exploitation: Debian GNU/Linux 7 (wheezy) / Release: 7.11 | OpenMediaVault / Release: 2.2.13
Serveur web: nginx/1.2.1
Serveur base de données: Ver 14.14 Distrib 5.5.54, for debian-linux-gnu (x86_64) using readline 6.2
Version de PHP: PHP 5.4.45-0+deb7u6
Version d'ownCloud (sur le site d'administration): ownCloud 9.1.3 (stable)
Est-il un mis-à-jour d'une version précédente ou une nouvelle installation?:
ownCloud log (data/owncloud.log): Nouvelle Installation

Configuration spécifique (external storage, external authentication, reverse proxy, server-side-encryption): NAS sur OpenMediaVault

Vérification d’intégrité du code (pour oC9+):

Accéder à http://example.com/index.php/settings/integrity/failed
de votre installation ownCloud en tant que administrateur.
No errors have been found.

Merci d'avance pour l'aide que vous pourriez m'apporter à la résolution de ce problème.


#2

Salut,

peut être bête, mais tu as vérifié les droits dans le répertoire data ?


#3

En effet, j'ai vu quelque part qu'un problème de droits pouvait provoquer ce genre d'erreurs, seulement en fait je sais pas très bien quels droits faut-il à owncloud pour pouvoir fonctionner correctement, sachant que le répertoire owncloud je l'ai créé via le système dossier partagé de OpenMediaVault (il rajoute des ACL par dessus les droits "basiques") avec un SETUID si je ne m'abuse. Est-ce qu'il y a quelque chose qui te choque dans les droits ci-dessous :

drwxrwsr-x+ 3 root users 4096 janv. 26 16:41 www

www/
drwxrwsr-x+ 15 root users 4096 janv. 26 22:37 owncloud

www/owncloud/
drwxrwx---+ 5 www-data users 4096 janv. 26 22:58 data

www/owncloud/data/
drwxrwxr-x+ 6 www-data www-data 4096 janv. 27 15:38 root

www/owncloud/data/root/
drwxrwxr-x+ 5 www-data www-data 4096 janv. 27 15:44 files

www/owncloud/data/root/files/
drwxrwxr-x+ 21 www-data www-data 4096 janv. 27 21:34 Images
drwxrwsr-x+ 2 www-data users 4096 janv. 27 15:44 Musiques


#4

je suis un spécialiste, mais c'est ton "users" qui me dérange. Pou ma part voila ce que j'ai, sachant que mon user "apache" corespond à ton "www-data"

ll /var/www/html/owncloud/
total 136
drwxr-xr-x. 28 apache apache 4096 28 janv. 23:19 3rdparty
drwxr-xr-x. 24 apache apache 4096 28 janv. 23:37 apps
-rw-r--r--. 1 apache apache 477 28 janv. 23:19 AUTHORS
drwxr-xr-x. 2 apache apache 63 28 janv. 23:28 config
-rw-r--r--. 1 apache apache 3017 28 janv. 23:19 console.php
-rw-r--r--. 1 apache apache 34520 28 janv. 23:19 COPYING-AGPL
drwxr-xr-x. 19 apache apache 4096 28 janv. 23:19 core
-rw-r--r--. 1 apache apache 5915 28 janv. 23:19 cron.php
drwxr-x---. 11 apache apache 4096 29 janv. 22:12 data
-rw-r--r--. 1 apache apache 23886 28 janv. 23:19 db_structure.xml
-rw-r--r--. 1 apache apache 179 28 janv. 23:19 index.html
-rw-r--r--. 1 apache apache 2026 28 janv. 23:19 index.php
-rw-r--r--. 1 apache apache 2595 28 janv. 23:19 indie.json
drwxr-xr-x. 3 apache apache 46 28 janv. 23:19 l10n
drwxr-xr-x. 6 apache apache 93 28 janv. 23:19 lib
-rwxr-xr-x. 1 apache apache 283 28 janv. 23:19 occ
drwxr-xr-x. 2 apache apache 69 28 janv. 23:19 ocs
drwxr-xr-x. 2 apache apache 41 28 janv. 23:19 ocs-provider
-rw-r--r--. 1 apache apache 2969 28 janv. 23:19 public.php
-rw-r--r--. 1 apache apache 4521 28 janv. 23:19 remote.php
drwxr-xr-x. 3 apache apache 19 28 janv. 23:19 resources
-rw-r--r--. 1 apache apache 26 28 janv. 23:19 robots.txt
drwxr-xr-x. 13 apache apache 4096 28 janv. 23:19 settings
-rw-r--r--. 1 apache apache 1817 28 janv. 23:19 status.php
drwxr-xr-x. 3 apache apache 33 28 janv. 23:19 themes
-rw-r--r--. 1 apache apache 233 28 janv. 23:19 version.php

ll /var/www/html/owncloud/data/
total 91024
drwxr-x---. 3 apache apache 18 28 janv. 23:20 admin


#6

Je viens de trouver la solution à mon problème. Le problème était lié aux options disponibles avec le plugin Nginx de OpenMediaVault. Lors de la création d'un serveur, il faut décocher l'utilisation de la configuration par défaut de PHP pour utiliser pleinement le pool créer préalablement sinon il utilisera l'instruction suivante :

location ~ .php$ {
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_pass $socket;
fastcgi_index index.php;
include fastcgi_params;
}

Alors qu'il faut utiliser les instructions suivantes à rajouter dans les options supplémentaires :

# Add headers to serve security related headers
# Before enabling Strict-Transport-Security headers please read into this topic first.
add_header Strict-Transport-Security "max-age=15552000; includeSubDomains";
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;

location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
}

# The following 2 rules are only needed for the user_webfinger app.
# Uncomment it if you're planning to use this app.
#rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
#rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;

location = /.well-known/carddav {
    return 301 $scheme://$host/remote.php/dav;
}
location = /.well-known/caldav {
    return 301 $scheme://$host/remote.php/dav;
}

location /.well-known/acme-challenge { }

# set max upload size
client_max_body_size 512M;
fastcgi_buffers 64 4K;

# Disable gzip to avoid the removal of the ETag header
gzip off;

# Uncomment if your server is build with the ngx_pagespeed module
# This module is currently not supported.
#pagespeed off;

error_page 403 /core/templates/403.php;
error_page 404 /core/templates/404.php;

location / {
    rewrite ^ /index.php$uri;
}

location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
    return 404;
}
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
    return 404;
}

location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
    fastcgi_split_path_info ^(.+\.php)(/.*)$;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_param HTTPS on;
    fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice
    fastcgi_param front_controller_active true;
    fastcgi_pass $socket;
    fastcgi_intercept_errors on;
    #fastcgi_request_buffering off; #Available since nginx 1.7.11
}

location ~ ^/(?:updater|ocs-provider)(?:$|/) {
    try_files $uri $uri/ =404;
    index index.php;
}

# Adding the cache control header for js and css files
# Make sure it is BELOW the PHP block
location ~* \.(?:css|js)$ {
    try_files $uri /index.php$uri$is_args$args;
    add_header Cache-Control "public, max-age=7200";
    # Add headers to serve security related headers (It is intended to have those duplicated to the ones above)
    # Before enabling Strict-Transport-Security headers please read into this topic first.
    add_header Strict-Transport-Security "max-age=15552000; includeSubDomains";
    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Robots-Tag none;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;
    # Optional: Don't log access to assets
    access_log off;
}

location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
    try_files $uri /index.php$uri$is_args$args;
    # Optional: Don't log access to other assets
    access_log off;
}

Merci à toi @iochy pour ton aide et j'espère que cela aidera d'autres personnes qui utilisent OMV.