Friendica-Server für soziale Netzwerke – Setup: PHP Fehler beim Schlüssel erzeugen

Status
Für weitere Antworten geschlossen.

herkulesamstart

Benutzer
Mitglied seit
19. Jul 2012
Beiträge
12
Punkte für Reaktionen
0
Punkte
0
Hallo!

Ich möchte gerne einen Friendica-Server auf meiner DS zum laufen bringen. Mit PHP kenne ich mich aber nicht sonderlich aus und komme daher bei diesem Fehler leider nicht weiter:

Warning: shell_exec(): Cannot execute using backquotes in Safe Mode in /volume2/web/friendica/mod/install.php on line 333

Schlüssel erzeugen (required)

Fehler: Die Funktion "openssl_pkey_new" auf diesem System ist nicht in der Lage, zu erzeugen
Wenn der Server unter Windows läuft, schau dir bitte "http://www.php.net/manual/en/openssl.installation.php" an.

In den DS PHP-Einstellungen ist die "openssl" extension standardmäßig aktiviert und von mir nicht verändert. Außerdem habe ich nachgeschaut, ob in der php.ini der Safe Mode aktiviert ist, was nicht der Fall ist. Ich habe allerdings via ssh und vi in der php.ini "register_argc_argv" auf On gestellt, da dies hier anscheinend auch benötigt wird. Außerdem habe ich auch über die DS PHP-Einstellungen den Pfad zu friendica in das open_basedir hinzugefügt.

Was ist zu tun, damit die "openssl_pkey_new" funktion ihren job tut? Kann es sein, dass php doch im Safe Mode läuft?

Beste Grüße
Herkulesamstart

Ps.: Ich hoffe ich bin hier im Forum richtig und meine Frage ist nicht zu friendica spezifisch. Zum besseren Verständnis füge noch zwei Screenshots bei.

Bildschirmfoto vom 2012-08-10 18:01:48.jpg

Bildschirmfoto vom 2012-08-10 17:37:56.jpg
 

crick

Benutzer
Mitglied seit
29. Mai 2008
Beiträge
1.241
Punkte für Reaktionen
2
Punkte
64
Ich glaube das hat was mit Zertifikaten zu tun, welche man generieren muss. Schau dich mal in der openssl.cnf um. Ich bin da aber auch kein Spezialist drin :-(
 

herkulesamstart

Benutzer
Mitglied seit
19. Jul 2012
Beiträge
12
Punkte für Reaktionen
0
Punkte
0
Danke für den Hinweis mit der openssl.cnf Datei. Dadurch bin ich auf eine openssl.cnf Vorlage gestoßen, die ich nach dieser Anleitung auf meine DS gezogen habe.

http://www.vdsar.net/archives/114

Jetzt komme ich durch die Installation und friendica kann auch auf die mysql Datenbank zugreifen. Allerdings bekomme ich noch keine Registrations-Mail für den Admin zugesendet und kann mich somit nicht einloggen. Ich hab auch schon geschaut, ob es an der php-mail Funktion liegt, die kann aber mails verschicken.

Woran könnte es liegen?
 

herkulesamstart

Benutzer
Mitglied seit
19. Jul 2012
Beiträge
12
Punkte für Reaktionen
0
Punkte
0
So da ich es nun ans laufen bekomme habe werde ich auch noch verraten, wie ich dahin gekommen bin! Durch die Suchce nach dem openssl_pkey_new() Problem bin ich auf folgendes gestoßen:

Generally a white screen indicates a PHP fatal error (missing function, etc.). On a new installation, it's probably the result of a missing module (just as happened with mysql).

You'll have a file called .htconfig.php where you can add these lines to log whatever killed PHP:

PHP:
error_reporting(E_ERROR | E_WARNING | E_PARSE );
ini_set('error_log','php.out');
ini_set('log_errors','1');
ini_set('display_errors', '0');

Make sure that php.out is writeable by the UID the webserver runs as.

If other pages show up, but just submitting registration turns up blank, it's probably the result of openssl_pkey_new() not being able to create key pairs. This seems to be a bit tricky to configure on Windows and some XAMPP/WAMPP platforms.
2.Post: http://www.webhostingtalk.com/showthread.php?t=1113862

also habe ich mich auf die DS eingeloggt und die .htconfig.php, um den Error-Log erweitert und die Datei php.out mittels "touch" angelegt. So konnte ich php nun lauschen und bin auf folgenden Fehler gekommen:

PHP Fatal error: Call to undefined function dns_get_record() in /volume2/web/friendica/include/network.php on line 615

Nachdem ich also die openssl.cnf heruntergeladen und angepasst hatte war mit der Schlüsselgenerierung bereits alles in Ordnung. Der Fehler lagt bei mir also daran, dass die Funktion dns_get_record() von php nicht gefunden wurde.

PHP:
// checks that email is an actual resolvable internet address

if(! function_exists('validate_email')) {
function validate_email($addr) {

	if(get_config('system','disable_email_validation'))
		return true;

	if(! strpos($addr,'@'))
		return false;
	$h = substr($addr,strpos($addr,'@') + 1);

	if(($h) && (dns_get_record($h, DNS_A + DNS_CNAME + DNS_PTR + DNS_MX) || filter_var($h['host'], FILTER_VALIDATE_IP) )) {
		return true;
	}
	return false;
}}

Ich habe die Funktion so angepasst, dass Sie nun immer true wieder gibt. Also vor der ersten if abfrage ein
PHP:
return true;
hinzugefügt. Leider weiss ich nicht inwieweit nun die Türen für exploits geöffnet sind, wenn nun grundsätzlich alle Mailadressen zugelassen werden? Daher ist dieses Vorgehen bestimmt nicht empfehlenswert...

Grundsätzlich noch ein paar andere Links zum Thema:
Man kann friendica wirklich gut via git auf der DS installieren:
1. ipkg installieren
2. git installieren
3. friendica via git ziehen

Wenn man der Anleitung folgt und auch das "git pull" ausführt bekommt folgenden Fehler:
/opt/libexec/git-core/git-pull: line 244: tr: not found
Lösung:
ipkg install textutils

Ich habe meine /etc/crontab dann noch wie folgt angepasst:
*/15 * * * * root cd /var/services/web/friendica; /user/bin/php include/poller.php
30 5,13 * * * root cd /var/services/web/friendica; git pull
30 4 * * * root cd /var/services/web/friendica/addon; git pull

so wer dann auch noch via https auf die Website und mit eigenem Zetifikat zugreifen mag findet hier in der synology-wiki eine funktionierende Anleitung für die ssl-verschlüsselung:
http://www.synology-wiki.de/index.php/Generierung_eines_eigenen_SSL-Zertifikats


Wenn Du also noch eine bessere Lösung für das Problem mit der dns_get_record() Funktion weisst, dann schreib mir doch bitte nochmal ;)

Beste Grüße
herkulesamstart
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat