Fel PHP version
-
Hej!
Jag har en WP multisite miljö som jag administrerar via cPanel. Där har jag valt PHP 8.3 till samtliga aktiva sidor. Inne i WordPress Dashboard står det dock PHP 7.4.33 överallt. Vad kan detta bero på?
/LS
-
Moderator
tobifjellner (Tor-Bjorn “Tobi” Fjellner)
(@tobifjellner)
WordPress-hemmapulare, Projektledare, Författare, Översättare och Vänlig Själ
Jag tror att värdet du ser i WordPress är det korrekta.
Kolla om det kanske finns några kommandon som laddar den äldre PHP-versionen i .htaccess, php.ini, httpd.conf eller liknande.
OK. Är det bland huvudwebbplatsens filer som jag ska söka då (eller måste jag leta även i de underliggande webbsajterna)? Kan jag bara ta bort dylika rader/kommandon om jag hittar några eller sabbar jag saker då?
Moderatortobifjellner (Tor-Bjorn “Tobi” Fjellner)
(@tobifjellner)
WordPress-hemmapulare, Projektledare, Författare, Översättare och Vänlig Själ
Tekniskt är en WordPress ”multisite” en enda webbplats, som styr alla inkommande förfrågningar till samma huvudinstallation.
Om en utvecklare eller webmaster styrt om webbplatsen till en äldre PHP-version kan anledningen vara att hen inte ville gå in och lösa kompatibilitetsproblem där något tillägg eller tema anropar borttagna eller förändrade PHP-funktioner.
Om multi-webbplatsen kan tåla att vara nere någon timme kan du prova att byta PHP-version och kolla vad som händer. Jag skulle aktivera loggning av PHP-fel först för att hitta ledtrådar till var det blir fel. (Se https://developer.wordpress.org/advanced-administration/debug/debug-wordpress/ )
Om nätverket helst bör hållas igång kanske du kan prova att klona det till en staging-miljö.
Börja i vilket fall som helst med att ta ordentlig backup på allting.
Och stäng av felsökningen när den inte längre behövs. Du vill inte att angripare ska kunna sniffa fram fel-loggar som direkt pekar på eventuell föråldrad kod.
Jag kollade .htaccess i rotkatalogen (i /public_html) och den ser lite skum ut…
RewriteOptions inherit
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# uploaded files
RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule . index.php [L]
# php -- BEGIN cPanel-generated handler, do not edit
# Set the “ea-php56” package as the default “PHP” programming language.
<IfModule mime_module>
AddHandler application/x-httpd-ea-php56___lsphp .php .php5 .phtml
</IfModule>
# php -- END cPanel-generated handler, do not editSom synes nämns PHP 5. Det är dock PHP 7 som visas inne i WordPress (och PHP 8 i cPanel). Hur hänger det ihop?
Moderatortobifjellner (Tor-Bjorn “Tobi” Fjellner)
(@tobifjellner)
WordPress-hemmapulare, Projektledare, Författare, Översättare och Vänlig Själ
Intressant.
Jag kan tänka mig olika varianter.
Kanske detta kommando pekar på några filer som i själva verket ”säkerhetsuppdaterats” från 5.6 till 7.4.
Kanske det finns avvikande inställningar i någon överordnad eller underordnad katalog (även om rewrite-reglerna ser ut att vara normala).
Kanske webbserverns konfigurationsparametrar är hårdkodade till 7.4 och ignorerar försök att välja specifika PHP-versioner via cpanel och/eller .htaccess. Kolla med webbhotellet.
Det är enl. webbhotellets egna anvisningar som jag har försökt göra ändringarna i cPanel. Att de skulle ha hårdkodat något känns således inte särskilt sannolikt, men om alt.1 eller 2 skulle vara orsaken… Var ska jag börja leta (vilka platser och vilka filer ska jag fokusera på)?
Moderatortobifjellner (Tor-Bjorn “Tobi” Fjellner)
(@tobifjellner)
WordPress-hemmapulare, Projektledare, Författare, Översättare och Vänlig Själ
Titta på filer som heter saker i stil med ini, conf etc. i den publika rotkatalogen, men också i eventuella privata kataloger ovanför den publika roten.
/public_html/user.ini ser misstänkt ut… Något man kan editera?
; cPanel-generated php ini directives, do not edit
; Manual editing of this file may result in unexpected behavior.
; To make changes to this file, use the cPanel MultiPHP INI Editor (Home >> Software >> MultiPHP INI Editor)
; For more information, read our documentation (https://go.cpanel.net/EA4ModifyINI)
[PHP]
display_errors = Off
max_execution_time = 3000
max_input_time = 6000
max_input_vars = 1000
memory_limit = 1024M
post_max_size = 1024M
session.gc_maxlifetime = 1440
session.save_path = "/var/cpanel/php/sessions/ea-php74"
upload_max_filesize = 2048M
zlib.output_compression = OffHelst skulle jag dock vilja undvika att hårdkoda specifika filer. Det bästa vore såklart att kunna sköta sådana här saker i administrationsgränssnittet (cPanel).
En ny iakttagelse… På alla andra platser som jag kan hitta .user.ini finns även php.ini (med till synes identiskt innehåll), men inte i /public_html. Där finns enbart .user.ini. Det verkar dessutom endast vara där som det finns en referens till PHP 7.4.
För att testa om filen alls behövs döpte jag om den till .user.ini_OLD, men det det blev ingen skillnad. Frågan är om php.ini behöver finnas i samma katalog för att det ska bli rätt?
-
Det här svaret redigerades för 2 månader sedan av
lensv.
Moderatortobifjellner (Tor-Bjorn “Tobi” Fjellner)
(@tobifjellner)
WordPress-hemmapulare, Projektledare, Författare, Översättare och Vänlig Själ
Nu handlar den här tråden inte längre om WordPress.
Jag har ingen aning om vilken variant av Apache som körs eller hur webbhotellets miljö ser ut. Jag vet inte ens vilket webbhotell det gäller. Så du får väl prova runt och kanske fråga deras support.När jag googlar runt verkar det som om php.ini och user.ini i princip fyller samma funktion.
Oj, då ber jag om ursäkt för att jag frågade. Jag tänkte mest att det kan finnas någon mer vänlig själ här som har erfarenheter av PHP, men det kanske det inte gör?
Moderatortobifjellner (Tor-Bjorn “Tobi” Fjellner)
(@tobifjellner)
WordPress-hemmapulare, Projektledare, Författare, Översättare och Vänlig Själ
Jag tror att jag hittat en liten ledtråd.
https://docs.cpanel.net/ea4/php/about-php/ säger ”EasyApache 4 supports PHP version 7.4 and PHP 8.1 through 8.5.”
Så OM du begär en äldre version kommer antagligen den äldsta som stöds att hämtas.
Kan du prova att skapa en fil ”mintestfil.php” med följande innehåll:
<?php
phpinfo();och lägga den i katalogen där WordPress finns?
När du kör den bör du kunna se vilken eller vilka konfigurationsfiler som körts, mm.
Tnx!
Jag har skapat filen och lagt den i /public_html, men hur exekverar jag den?
Som du märker är jag inte helt hemma i den här miljön 😉
Moderatortobifjellner (Tor-Bjorn “Tobi” Fjellner)
(@tobifjellner)
WordPress-hemmapulare, Projektledare, Författare, Översättare och Vänlig Själ
Du besöker helt enkelt filens URL från en webbläsare. 🙂 https://min.domän/mintestfil.php, typ.
Nu lyckades jag. Det är helt klart 7.4 som körs, men frågan är varifrån den hämtar informationen? Det var rätt mycket output från filen, men jag klistrar in det specifika PHP-avsnittet…
Core
PHP Version 7.4.33
Directive Local Value Master Value
allow_url_fopen On On
allow_url_include Off Off
arg_separator.input & &
arg_separator.output & &
auto_append_file no value no value
auto_globals_jit On On
auto_prepend_file no value no value
browscap no value no value
default_charset UTF-8 UTF-8
default_mimetype text/html text/html
disable_classes no value no value
disable_functions no value no value
display_errors Off Off
display_startup_errors Off Off
doc_root no value no value
docref_ext no value no value
docref_root no value no value
enable_dl On On
enable_post_data_reading On On
error_append_string no value no value
error_log error_log error_log
error_prepend_string no value no value
error_reporting 32767 32767
expose_php On On
extension_dir /opt/alt/php74/usr/lib64/php/modules /opt/alt/php74/usr/lib64/php/modules
file_uploads On On
hard_timeout 2 2
highlight.comment #FF8000 #FF8000
highlight.default #0000BB #0000BB
highlight.html #000000 #000000
highlight.keyword #007700 #007700
highlight.string #DD0000 #DD0000
html_errors On On
ignore_repeated_errors Off Off
ignore_repeated_source Off Off
ignore_user_abort Off Off
implicit_flush Off Off
include_path .:/opt/alt/php74/usr/share/pear .:/opt/alt/php74/usr/share/pear
input_encoding no value no value
internal_encoding no value no value
log_errors On On
log_errors_max_len 1024 1024
mail.add_x_header Off Off
mail.force_extra_parameters no value no value
mail.log no value no value
max_execution_time 1000 30
max_file_uploads 20 20
max_input_nesting_level 64 64
max_input_time 600 -1
max_input_vars 1000 1000
max_multipart_body_parts -1 -1
memory_limit 128M 128M
open_basedir no value no value
output_buffering 4096 4096
output_encoding no value no value
output_handler no value no value
post_max_size 128M 8M
precision 14 14
realpath_cache_size 4096K 4096K
realpath_cache_ttl 120 120
register_argc_argv Off Off
report_memleaks On On
report_zend_debug On On
request_order GP GP
sendmail_from no value no value
sendmail_path /usr/sbin/sendmail -t -i /usr/sbin/sendmail -t -i
serialize_precision -1 -1
short_open_tag On On
SMTP localhost localhost
smtp_port 25 25
sys_temp_dir no value no value
syslog.facility LOG_USER LOG_USER
syslog.filter no-ctrl no-ctrl
syslog.ident php php
track_errors Off Off
unserialize_callback_func no value no value
upload_max_filesize 256M 4M
upload_tmp_dir no value no value
user_dir no value no value
user_ini.cache_ttl 300 300
user_ini.filename .user.ini .user.ini
variables_order EGPCS EGPCS
xmlrpc_error_number 0 0
xmlrpc_errors Off Off
zend.assertions 1 1
zend.detect_unicode On On
zend.enable_gc On On
zend.exception_ignore_args Off Off
zend.multibyte Off Off
zend.script_encoding no value no value
zend.signal_check Off Off*Edit: Jag ser följande path här ovan…
include_path .:/opt/alt/php74/usr/share/pear .:/opt/alt/php74/usr/share/pearJag kan dock inte se /opt över huvud taget i katalogsstrukturen. Ligger den möjligtvis utanför den miljö som jag kommer åt?
-
Det här svaret redigerades för 2 månader sedan av
Du måste vara inloggad för att svara på detta ämne.