cURL error 7 nc20

Aktualisierung und Installation von APPs scheitert mit o.g. Fehlermeldung!

Im Zusammenhang mit Collabra, Openoffice und Docker ist
“cURL error 7” schon oft behandelt.

Kann leider nichts zur Ursache finden fĂŒr meine Konfiguration


Infos:


Version
Pi4B - NextCloud 20.0.8

Betriebssystem: Linux 5.10.17-v8+ aarch64
Prozessor: Unknown Processor
Speicher: 3.71 GB

eth0
Status: up
Geschwindigkeit: 1000 Mbps Duplex: full
MAC: xx:xx:xx:49:38:8f
IPv4: 192.168.0.04 192.168.0.42
IPv6: 2000:de:fe07:5000:dee6:32ef:ee49:388e/64 ee80::eea6:32ef:fe49:388f/64

php
Version: 7.3.27
Arbeitspeicher-Grenzwert: 512 MB
Maximale AusfĂŒhrungszeit: 3600
Maximale GrĂ¶ĂŸe zum Hochladen: 128 MB

Database
Art: mysql
Version: 10.3.27
GrĂ¶ĂŸe: 137,3 MB


error7

Gruß und Dank
hermanja

Kann es sein, dass in der config.php noch der folgende Eintrag von Àlteren Versionen von NC zu finden ist?

'appstoreurl' => 'https://api.owncloud.com/v1',

Wenn ja, die o.g. Direktive rausnehmen (löschen) und die Aktualisierung und Installation von APPs sollte danach funktionieren.

Danke zunĂ€chst fĂŒr die schnelle RĂŒckmeldung


In
/var/www/nextcloud/config/config.php
ist
appstoreurl' => 'https://api.owncloud.com/v1
oder auch nur
appstoreurl
nicht enthalten - es ist doch die config.php in der ich suchen muss?

hermanja

Versuche mal in einem Terminal

curl https://apps.nextcloud.com

um zu sehen, ob Du mit curl ĂŒberhaupt was verrichten kannst. Es sollte Dir dann die “html-version” vom Appstore heruntergeladen werden.

Hier der erste Teil des Ergebnis von
curl https://apps.nextcloud.com


 html code?

Mit dem Browser erreiche ich die Seite ohne Probleme


allerdings sehr verlangsamt vom pi mit der Nextcluud und in normalem Tempo von einem anderen Rechner


H.

Richtig, NC’s config-Datei.

Und wie ich sehe, funktioniert Curl ordnungsgemÀss.

Es könnte ein Timeout-Problem sein.
Du kannst noch folgendes in einem Terminal in Deinem Nextcloud-Verzeichnis probieren:

sudo -u www-data php occ app:install <appname>

Damit kannst Du apps einzeln installieren, vielleicht ist dann auch die Fehlermeldung genauer.
Falls Du nicht www-data als Webserver-user hast muß den von Dir nehmen.

Ich bin nicht tief genug im Thema - 3 Fragen:

  1. Wie ermittle ich den zustÀndigen Nutzer - Webserver-user?
  2. muss ich "sudo -u www-data php occ app:install "
    dort ausfĂŒhren wo das nextcloud Verzeichnis liegt, bei mir wĂ€re das
    /media/4tb/www/nextcloud oder in /var/www/nextclud ?
  3. Wenn also der user z.B. pi heist und ich pico installieren möchte:
    gilt:
    cd /media/4tb/www/nextcloud
    sudo -u pi php occ app:install pico

Danke schon mal fĂŒr die Geduld

H.

Also 2) zuerst: richtig wÀre in Deinem Fall /media/4tb/www/nextcloud
zu 1) wenn Du dann in diesem Verzeichnis 2) bist, schau Dir einfach an welchen Benutzer die Dateien darin haben: ls -alt.
Dann kannst Du noch ein cat /etc/passwd durchfĂŒhren und schauen welcher user das Heimatverzeichnis /media/4tb/www hat, die user sollten gleich sein
zu 3) richtig

moin,

pi@pi4b:/media/4tb/www/nextcloud $ sudo -u www-data php occ app:install pico
erzeugt folgende Ausgabe:

"
An unhandled exception has been thrown:
Doctrine\DBAL\DBALException: Failed to connect to the database: An exception occured in driver: SQLSTATE[HY000] [1698] Access denied for user ‘oc_pi’@‘localhost’ in /media/4tb/www/nextcloud/lib/private/DB/Connection.php:64
Stack trace:
#0 /media/4tb/www/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(429): OC\DB\Connection->connect()
#1 /media/4tb/www/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(389): Doctrine\DBAL\Connection->getDatabasePlatformVersion()
#2 /media/4tb/www/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(328): Doctrine\DBAL\Connection->detectDatabasePlatform()
.




#55 /media/4tb/www/nextcloud/occ(11): require_once(’/media/4tb/www/
’)
#56 {main}pi@pi4b:/media/4tb/www/nextcloud $
"
Die Zeilen #3 bis #54 hab ich mal weggelassen


Warum “Acces denied for user ‘oc_pi’
” ?

H.

Da mußt Du in Deiner config.php nachschauen, die sollte bei Dir im Verzeichnis

/media/4tb/www/nextcloud/config

sein.

Da mĂŒĂŸte dann so ein Eintrag sein:

‘dbuser’ => ‘oc_pi’,

Wenn das tatsĂ€chlich dein Datenbank-User sein sollte weiß ich auch nicht warum dieser Fehler kommt.

Aber (Lichtblick) ich vermute mal, das ist nicht Dein DB-User.

Das kannst Du mit mysql herausfinden:

mysql -u oc_pi -p <DeinDBPasswrt> <NameDeinerNextcloudDB>

Wenn Du damit Zugriff auf Deine Nextcloud-DB hast, weiß ich nicht warum bei Dir dieser Fehler gekommen ist.

Hallo,

den ‘dbuser’ => ‘oc_pi’ habe ich durch ‘www-data’ ersetzt und das entsprechende passwort eingegeben - dann:

root@pi4b:/media/4tb/www/nextcloud# sudo -u www-data php occ app:install pico
Nextcloud or one of the apps require upgrade - only a limited number of commands are available
You may use your browser or the occ upgrade command to do the upgrade
Error: Could not download app pico
root@pi4b:/media/4tb/www/nextcloud#

Also habe ich jetzt Zugriff auf die DB, als www-data.

Was nun
?

H.

Also, irritierend ist, daß Du das Passwort fĂŒr www-data in Deine config.php eingetragen hast und es dann funktionierte(?). Das PW in der config.php ist nĂ€mlich verschlĂŒsselt und Du hast es bestimmt als Klartext eingetragen. Da kann irgendwas nicht stimmen.
Versuche das ganze doch nochmal mit mysql:

mysql -u www-data -p <DeinDBPasswrt> <NameDeinerNextcloudDB>

Mal sehen ob Du damit tatsÀchlich Zugriff auf Deine DB hast.

Ich habe in der config.php die EintrÀge wiederhergestellt, als user oc_pi und das
entsprechene "verschlĂŒsselte " Passwort.

Ergebnis fĂŒr
mysql -u www-data -p xxxxxxxx nextcloud


Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 1676
Server version: 10.3.27-MariaDB-0+deb10u1 Debian 10

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

MariaDB [nextcloud]> mysql -u www-data -p 286606roe nextcloud
→


das →
zeigt doch, dass die Verbindung geht, oder?
auch fĂŒr oc_pi zeigt der o.g. Befehl → an.

H.

Erstmal muß ich mich korrigieren, das PW wird nicht verschlĂŒsselt abgespeichert.

Jetzt noch mal von vorne:

  1. Du bekommst einen curl-Fehler gemeldet, curl selbst funktioniert aber bei Dir.
    Bei welcher Aktion bekommst Du eigentlich den Fehler gemeldet?
    Und ist er immer noch vorhanden?

  2. Wenn Du versuchst die app pico mit dem tool occ zu installieren bekommst Du einen DB-Fehler
    Wenn Du mit Deinen DB-Zugangsdaten mit mysql auf die DB zugreifst, funktioniert das aber. Das ist insofern irritierend als Dir vom occ-tool explizit “Access denied for user ‘oc_pi’@‘localhost” gemeldet wird. Kannst Du mit dem user ‘oc_pi’ Dir die Tabellen und den Inhalt der Tabellen Deiner nextcloud-DB anzeigen lassen?
    Hast Du mal probiert eine andere app mit dem occ-tool zu installieren?

  3. Nachdem Du den user oc_pi angelegt hattest, hast Du dann auch ein GRANT fĂŒr die “PRIVILEGES” gemacht?
    GRANT ALL PRIVILEGES ON nextcloud.* TO ‘oc_pi’@‘localhost’ WITH GRANT OPTION;
    FLUSH PRIVILEGES;

Hallo,

zu 1.
der curl-Fehler tritt auf, wenn ich bei den Apps z.B. pico installiereen oder eine 'andere App aktualisieren möchte:
“Es ist ein Fehler bei der Anfrage aufgetreten. Es kann nicht fortgefahren werden.
cURL error 7: (see https://curl.haxx.se/libcurl/c/libcurl-errors.html)”

die haxx.se sagt mir zu error7: Failed to connect() to host or proxy
einen Proxy habe ich nicht


Fehler tritt schon lÀnger auf, genau kann ich das leider nicht sagen


zu 2.
andere Apps wie deck oder Automated PDF conversion gehen auch nicht.
In den MYSQL-Tabellen bin ich immer nur unter PHPMyAdmin unterwegs, so weiss ich zwar wie ich mysql aufrufe, aber wie ich dann den Inhalt als user oc_pi oder www-data auslese weiss ich nicht?!

zu3.
habe in PHPmyAdmin dem user oc_pi alle erdenklichen Rechte gegeben



Dachte das reicht


H.

Melde Dich mit dem User oc_pi bei mysql an. Dann
SHOW TABLES;
#Damit sollten Dir Deine Nextcloud-Tabellen angezeigt werden.
Danach z.B.
select * from oc_accounts;

Du brauchst den output hier nicht zu posten, es ist nur von Interesse ob Dir der Tabelleninhalt angezeigt wird. Falls Fehlermeldungen kommen bitte dann posten.

Die Rechte die Du mit phpmyadmin vergeben hast reichen natĂŒrlich.

Ich habe die Abfragen in mysql gemacht - funktionieren bei beiden usern;
oc_pi und www-data.

H.

Dann muß man woanders suchen.

Gib mal

php -mod

ein und prĂŒfe nach ob die folgenden Module vorhanden sind:

mysqli
mysqlnd
pdo_mysql

und außerdem das Modul

curl

Dann ist es an der Zeit, daß Du Dir das logfile ansiehst. Du findest das bei Dir im Verzeichnis nextcloud/data und es heißt (natĂŒrlich) nextcloud.log. Versuche nochmal die app pico zu installieren und sieh Dir dann die letzten EintrĂ€ge im logfile an.

GRANT ALL PRIVILEGES ON nextcloud.* TO 'oc_pi'@'localhost'WITH GRANT OPTION;

Das solltest Du aus SicherheitsgrĂŒnden so lieber nicht machen! Oder magst Du erlauben, dass der Datenbanknutzer “oc_pi” anderen Datenbanknutzern selbststĂ€ndig und ohne Dein Zutun Zugriffsrechte auf die Nextclouddatenbank gewĂ€hren darf?

Dasselbe gilt ĂŒbrigens auch fĂŒr den Benutzer “www-data”!

GRANT ALL ON nextcloud.* TO 'oc_pi'@'localhost' IDENTIFIED BY '<Passwort-Nextcloud-Datenbank>';

vergibt genĂŒgend Privilegien (Rechte), um den Zugriff von “oc_pi” auf die Datenbanktabellen der Datenbank “nextcloud” ausreichend zu gewĂ€hren.

Desweiteren: der Apache-Nutzer (www-data) hat nichts auf direktem Wege in Datenbanken verloren!

Am besten Du fÀngst in Bezug auf die Zugriffsrechte auf die Nextcloud-Datenbank nochmal sauber von vorne an:

  1. PrĂŒfe im ersten Schritt, welche Nutzer welche Rechte an welchen Datenbanken haben:

mariadb> SELECT User,Host FROM mysql.user;

  • Offensichtlich hattest Du die Benutzer “oc_pi” und “www-data” bereits im Vorfeld angelegt gehabt und ihnen Vollzugriff auf alle Datenbanken gewĂ€hrt. Entziehe diese vorerst wieder und entferne den Benutzer “www-data” aus der Datenbank:

mariadb> use mysql;

mariadb> DROP USER IF EXISTS www-data;
mariadb> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'nextcloud'@'localhost';

  1. Vergebe sicherheitshalber ein neues individuelles Passwort nur fĂŒr den Benutzer “oc_pi”:

mariadb> ALTER USER 'oc_pi'@'localhost' IDENTIFIED BY '<individuelles-datenbanpasswort>';

  1. Vergebe nun die notwendingen Rechte an der Datenbank “nextcloud” an den Benutzer “oc_pi”:

mariadb> GRANT ALL ON nextcloud.* TO 'oc_pi'@'localhost' IDENTIFIED BY '<individuelles-datenbanpasswort>';

  1. Verlasse die Datenbankkonsole mit den Befehlen:

mariadb> flush privileges;
mariadb> quit

  1. Passe nun die config Deiner Nextcloudinstallation entsprechend an (ich vermute, Du verwendest das standartmĂ€ssig installierte “nano” zum editieren von Dateien ĂŒber die CLI):

root@pi4b: nano /media/4tb/www/nextcloud/config/config.php

  • Passe den Abschnitt fĂŒr den Datenbankzugriff korrekt an:

------------- 8< -------------
‘dbtype’ => ‘mysql’,
‘dbhost’ => ‘localhost’,
‘dbname’ => ‘nextcloud’,
‘dbtableprefix’ => ‘oc_’,
‘dbuser’ => ‘oc_pi’,
‘dbpassword’ => ‘individuelles-datenbanpasswort’,
------------- >8 -------------

Das ganze hilft vermutlich noch nicht, Dein cURL-Problem zu lösen, aber mit den hier beschriebenen Schritten hast Du nun die Zugriffsrechte fĂŒr Deine Nextcloud-Datenbank in Ordnung gebracht und kannst zumindest ein Datenbankzugriffsproblem als Quelle ausschliessen.