Page 1 of 1

PHP-Version ändern

Posted: Thu 8. Sep 2022, 09:39
by 24unix
Laut den Changelogs:
„Ensured full compatibility with PHP 8.1 and additionally fixed numerous 'deprecated notices' etc. throughout the codebase“

ist KeyHelp nun zu PHP 8.1 kompatibel.

Wäre es dann nicht möglich, den default cli Interpreter auf 8.1 umzustellen?

Mit keyhelp-php81 zu arbeiten ist sehr umständlich und führt zu solchen Konstrukten:

Code: Select all

keyhelp-php81 /usr/local/bin/composer require symfony/apache-pack
statt

Code: Select all

composer require symfony/apache-pack
Ausserdem kann man keine Scripte mit shebang nutzen,
#!/usr/bin/env php
zeigt unter KH ja auf die default Version des aktuellen Systems, im Falle von Bullseye halt 7.4.

Re: PHP-Version ändern

Posted: Thu 8. Sep 2022, 10:13
by Alexander
Es bleibt weiterhin bei folgendem Hinweis:
screen.png
Die KeyHelp Version für PHP 8.1 besteht aus anderen Dateien als die für Systeme mit PHP 7.1 -> 7.4.
Wenn auf einem z.B. Debian 11 (PHP 7.4) System plötzlich PHP 8.1 läuft, wird KeyHelp definitiv nicht funktionieren, wenn nicht vorher KeyHelp komplett ausgetauscht wurde.

Re: PHP-Version ändern

Posted: Thu 8. Sep 2022, 10:18
by Florian
Hallo,

man kann doch hinter /usr/bin/env auch ein anderes Binary angeben, daher sollte doch /usr/bin/env keyhelp-php81 auch funktionieren.

Re: PHP-Version ändern

Posted: Thu 8. Sep 2022, 10:28
by 24unix
Alexander wrote: Thu 8. Sep 2022, 10:13 Wenn auf einem z.B. Debian 11 (PHP 7.4) System plötzlich PHP 8.1 läuft, wird KeyHelp definitiv nicht funktionieren, wenn nicht vorher KeyHelp komplett ausgetauscht wurde.
OK, schade. Aber danke für die Info.
Florian wrote: Thu 8. Sep 2022, 10:18 Hallo,

man kann doch hinter /usr/bin/env auch ein anderes Binary angeben, daher sollte doch /usr/bin/env keyhelp-php81 auch funktionieren.
Ja, aber ich habe nicht auf jedem System KeyHelp.

Ich habe bis jetzt keine Lösung gefunden, wie ich Scripte, die php81 brauchen auf unterschiedlichen System laufen lassen kann, ohne sie explizit mit dem interpreter aufzurufen.

Zum Beispiel verwende ich mein phpbb_update Script auch auf Kisten, auf denen ich keine Root rechte habe.

Aber ich werde mal probieren, ob ich einen einem Pfad einen Symlink keyhelp-php81 auf die passende CLI Version setzen kann.

Wirklich portabel ist das dann trotzdem nicht.

Re: PHP-Version ändern

Posted: Thu 8. Sep 2022, 11:47
by Tobi
24unix wrote: Thu 8. Sep 2022, 10:28 Ja, aber ich habe nicht auf jedem System KeyHelp.

Code: Select all


if (system == "keyhelp"){
// do some stuff
} else {
// do some other stuff
}


Re: PHP-Version ändern

Posted: Thu 8. Sep 2022, 11:51
by 24unix
Tobi wrote: Thu 8. Sep 2022, 11:47
24unix wrote: Thu 8. Sep 2022, 10:28 Ja, aber ich habe nicht auf jedem System KeyHelp.

Code: Select all


if (system == "keyhelp"){
// do some stuff
} else {
// do some other stuff
}

Nice try :-)

Es geht aber nur um die Zeile mit dem Shebang, im Code selber ist das kein Problem.

Re: PHP-Version ändern

Posted: Thu 8. Sep 2022, 13:13
by Tobi
24unix wrote: Thu 8. Sep 2022, 11:51 im Code selber ist das kein Problem.
Na genauso meinte ich das doch?
Nutze deinen Code, baue eine entsprechende Abfrage ein und gut ist.

KeyHelp verhält sich in manchen Grenzbereichen eigenständig.
Bei deiner selbstgeschriebenen Software hast du alle Freiheiten.

Re: PHP-Version ändern

Posted: Thu 8. Sep 2022, 13:19
by 24unix
Tobi wrote: Thu 8. Sep 2022, 13:13
24unix wrote: Thu 8. Sep 2022, 11:51 im Code selber ist das kein Problem.
Na genauso meinte ich das doch?
Nutze deinen Code, baue eine entsprechende Abfrage ein und gut ist.
Ich glaube, wir reden irgendwie aneinander vorbei :-(

Ich würde gerne Scripte systemweit mit #!/usr/bin/env php starten.

Auf einen KH System geht das nicht, weil da php auf 7.4 steht. Bei den anderen Systemen steht mir aber kein keyhelp-php81 zur Verfügung.

Und
#! if "keyhelp" then /usr/bin/env/keyhelp-php81 else /usr/bin/env/php

geht halt nicht.

Re: PHP-Version ändern  [GELÖST]

Posted: Thu 8. Sep 2022, 16:40
by 24unix
So, ich habe eine Lösung gefunden.

Im Home eine .zshenv anlegen:

Code: Select all

path=('/home/users/tracer/bin' $path)
Wichtig: Es muss der vollständige Pfad sein, ~ und $HOME klappen nicht.

So ist es OK:

Code: Select all

execve("/home/users/tracer/bin/php", ["php", "-v"], 0x7fffdb073898 /* 32 vars */) = 0
So nicht:

Code: Select all

execve("~/bin/php", ["php", "-v"], 0x7ffebf91e8b8 /* 32 vars */) = -1 ENOENT (No such file or directory)
execve("/usr/local/bin/php", ["php", "-v"], 0x7ffebf91e8b8 /* 32 vars */) = -1 ENOENT (No such file or directory)
execve("/usr/bin/php", ["php", "-v"], 0x7ffebf91e8b8 /* 32 vars */) = 0
Aber das geht:

Code: Select all

~/bin/php -v
PHP 8.1.7 (cli) (built: Jun 14 2022 10:02:46) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.7, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.7, Copyright (c), by Zend Technologies
Für die Leute, die zsh nicht nutzen:
path ist verknüpft mit PATH, path ist ein array, PATH ein String. Änderungen an jeweils einem von beiden wirken sich auf den anderen aus.

Code: Select all

% echo $PATH
/home/users/tracer/bin:/usr/local/bin:/usr/bin:/bin:/usr/games

% echo $path
/home/users/tracer/bin /usr/local/bin /usr/bin /bin /usr/games