Mi código funciona en localhost a través de APACHE, pero cuando alojé un sitio web con todos los mismos archivos y código, recibo este mensaje: Error fatal : llamada a la función indefinida str_contains() en /storage/ssd3/524/16325524/public_html/static/ encabezado.php en la línea 55
Código PHP donde se muestra el error:
<?php $menu = getAllData('meni'); global $korisnik; for ($i = 0; $i < count($menu); $i++){ if(isset($_SESSION['korisnik'])){ if(str_contains($menu[$i]->naziv, 'login') || str_contains($menu[$i]->naziv, 'reg')){ continue; } echo '<li><a href='.$menu[$i]->putanja.'>'.$menu[$i]->naziv.'</a></li>'; } else { if (str_contains($menu[$i]->naziv, 'profile') || str_contains($menu[$i]->naziv, 'out')) { continue; } echo '<li><a href=' . $menu[$i]->putanja . '>' . $menu[$i]->naziv . '</a></li>'; } } ?>Ver módulos Apache habilitados
sudo apachectl -MDeshabilitar 7.4 módulos
sudo a2dismod php7.*Habilitar php8
sudo a2enmod php8.1Los documentos dicen que str_contains se introdujo en PHP 8.0.
str_contains() se introdujo en PHP 8 y no es compatible con versiones anteriores.
Para versiones inferiores de PHP, puede usar una solución alternativa con strpos() :
if (strpos($haystack, $needle) !== false) { // haystack contains needle }La página del manual para str_contains dice que la función se introdujo en PHP 8. Sospecho que su host está en PHP 7 (o posiblemente inferior).
Puede definir un polyfill para versiones anteriores (adaptado de https://github.com/symfony/polyfill-php80 )
if (!function_exists('str_contains')) { function str_contains(string $haystack, string $needle): bool { return '' === $needle || false !== strpos($haystack, $needle); } }