Skip to main content


Hello !Friendica Support,
when I got to /settings/connectors I only get a white screen. Anyone else see this problem?

#Friendica

@Michael Vogel switching takes too much time, I can try it next week.
@Michael Vogel works with php7, so it clearly is a php8 related problem. What now?
@Michael Vogel I think this is not the solution... also it seems that parts of Friendica still use "php" instead of "php7", as htop shows the worker is still "php", it does not follow the setting here in the config:
//		; Location of PHP command line processor
		//'php_path' => '/usr/bin/php',
		'php_path' => '/usr/bin/php7',
Yeah, we have to have a look at these PHP 8 issues. AFAIK there had been issues with some of the packages we are using. But @Hypolite Petovan should know more about this.
@Michael Vogel @Hypolite Petovan I recall that this issues were solved or not existing anymore, I also recall that generally PHP 8 was OK to use, generally like in there should be no stopping reason any more.
I remove php8 completly again, I am not sure how long this will work.
@Michael Vogel I wonder why there is no notification for this thread...
In Friendica you mean? I do see notifications
I'm posting in stealth mode ...

rm -f /path/to/friendica/view/smarty3/compiled/*.php

Sollte das beheben.

...zumindest die Template Fehler.
Schade. Dann liegt's wohl an PHP8.
@utzer I have the same php version but not the error
Friendica 'Siberian Iris' 2021.07 - 1424
@Tealk hmm ok, I am on dev, but I had the problem on stable too.
@utzer If i switch to PHP 7 the Site wotks again, so it is PHP 8 who makes the Error.
Nextcloud hast problems to with php8
@Rick 💋 yes, I guess I will report errors and warnings for PHP, maybe someone solves them.

In PHP <8 kann man einfach schreiben:

$foo = $bar.

In type safe coding wie zum beispiel in C wird das nicht gehen und braucht man die werten ze declarieren.

$foo = 0;
$foo = (int)$bar;

Noch immer nicht type safe aber so kann man einfach keine neue variables definieren.

Hab auch gesehen das in php 8 die @function nicht mehr geht um die fehler meldungen nicht zu sehen.

@Hans Wolters @utzer Das empfinde ich auch an C/C++ besser. Definition einer Variable ist immer erforderlich und nicht dynamisch wie PHP das macht. 😀
Aber es is noch immer nicht type safe 😀

@Hans Wolters Etwas verwirrt bin ich? Okay, bei PHP gehen mittlerweile primitive Variablen wie int usw. auch als Type-Hint (Typenhinweis). Also z.B. "Hallo" kann bei einer Methode dann nicht an int uebergeben werden.

<?php

class Foo {
    private $int = 0;

    public function setInt (int $int) {
        $this->int = $int;
    }

    public function printInt () {
        printf('int[%s]=%d' . PHP_EOL, gettype($this->int), $this->int);
    }
}

$foo = new Foo();
$foo->setInt(20);
$foo->printInt();
$foo->setInt("Bar");
$foo->printInt();

Ergibt hier:
$ php method.php 
int[integer]=20
PHP Fatal error:  Uncaught TypeError: Argument 1 passed to Foo::setInt() must be of the type int, string given, called in /home/user/method.php on line 18 and defined in /home/user/method.php:6
Stack trace:
#0 /home/user/method.php(18): Foo->setInt()
#1 {main}
  thrown in /home/user/method.php on line 6
$

Oder bin ich da auf dem falschen Dampfer? 😉 Also [code]$this->int = "Foo"; geht bei PHP wieder.

@Hans Wolters Deswegen benutze ich liebend gerne Setter-Methoden in PHP und nicht public auf Klassenfelder/-attribute, damit diese gesichert sind.

Es gibt zwei wegen um ein integer abzuzwingen (ist das Deutsch?).

  • $a = intval($b);
  • $a = (int)$b;

Nummer eins ist ein function und braucht viele cpu cycles, Nummer zwei macht das schneller 😀

Das war aber vor Jahre, keine ahnung ob das jetzt noch so ist.

@Hans Wolters @utzer Mit (int) habe ich immer nummerische Daten von $_GET, $_POST, $_SESSION abgesichert, z.B. Jahreszahlen usw. wo der Benutzer wirklich nichts anderes haben kann ...

Aber ja, das beides klappt(e) in PHP immer. Wenn du CPU-Zyklen einsparen willst, ich weis ja nicht, wo du arbeitest, dann solltest du auch PHP selbst vermeiden. 😉 Das macht sehr viel "nebenher", z.B. gerade beim Laden von Include-Dateien, gruselig!

Alleine nur das obere Script macht sehr viele Systemaufrufe:
$ strace php method.php 2>method.php.txt
Erzeugt diese Datei.

Arbeiten geht leider nicht seit 2017 aber das ist nur eine von viel code sprachen die ich kenne 😀
Aber ohne direct ins tiefe zu springen, das problem mit Friendica und php 8 ist kein problem wenn die die variabelen definieren 😀
@Hans Wolters @utzer Empfinde ich an PHP8 auch gut, dass es mehr zum Definieren von Variablen uebergeht, als diese dynamisch zu erzeugen. Am besten mit Typ: int $foo; und dann nachher:
$foo = 1; # Das geht weiterhin, da die Typen uebereinstimmen.
$foo = intval("Beispiel"); # $foo ist dann 0
$foo = "Soll Fehler erzeugen";

Letzteres ist das dynamische "umtypisieren" auf string, was viele Fehler in der Vergangenheit erzeugt hatte - meiner Erfahrung nach.