Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: bool(false)
Forum PHP.pl > Forum > Serwery WWW > Apache
lewyx84
Witam,
chciałbym wiedzieć, od czego zależy, że kod:
Kod
<?php
$value = true;
var_dump($value ?: false);
na jednym serwerze pokazuje wartość true, a na drugim serwerze wartość false.
Czy jest za to odpowiedzialna jakaś zmienna w php.ini?

Pozdrawiam

Lewy
Pyton_000
wersja PHP
lewyx84
PHP 5.4.25 (cli)

Więc tak,
kod
Kod
<?php
$value = true;
var_dump($value ?: true);
?>

zapisany do pliku x.php i uruchomiony z przeglądarki pokazuje wartość false, ale ten sam kod odpalony za pomocą php x.php pokazuje w konsoli wartość true.

Natomiast kod:
Kod
<?php
$value = true;
var_dump(true ?: false)
?>


pokazuje wartość true.

Będę wdzięczny za pomoc.
Pyton_000
Z ciekawości u siebie odpaliłem na vps pliczek:
  1. <?php
  2.  
  3. $value = true;
  4. var_dump($value);
  5. $test = $value ?: false;
  6.  
  7. var_dump($test);
  8.  
  9. var_dump($value ?: falase);

i wynik true zarówno jako Browser jak i cli.

wersja php:
Kod
PHP 5.4.4-14+deb7u7 (cli) (built: Dec 12 2013 10:55:22)

Serwer Nginx + PHP FPM
lewyx84
U siebie również odpaliłem ten skrypt i:

w konsoli

bool(true)
bool(true)
bool(true)


a przez przeglądarkę

bool(true)
bool(false)
bool(false)

Gdzie więc jest zależność?
Problem pomiędzy apache a php?
Pyton_000
A powiedz jeszcze czy dla CLI i apache jest ładowany ten sam plik php.ini ? Jeżeli nie to zrób diff tych dwóch plików.
dla konsoli
Kod
php --ini

a dla apache
  1. <?php
  2. php_info();
lewyx84
Kod
php --ini
Configuration File (php.ini) Path: /usr/local/etc
Loaded Configuration File:         /usr/local/etc/php.ini


phpinfo
Kod
Configuration File (php.ini) Path    /usr/local/etc
Loaded Configuration File    /usr/local/etc/php.ini


Więc tak, ładowany jest ten sam plik
Pyton_000
Wrzuć może jeszcze gdzieś swój php.ini
Porównam go ze swoim. Choć nie mam pomysłu na problem :|

Wiem że występują różne kwiatki w konfiguracjach php jako Apache-mod a fpm, ale tutaj ?
lewyx84
http://wklej.org/hash/e398e575180/

Ja nie mam pomysłu, co może być źle.
Pyton_000
przenieś to
Kod
[Zend]
zend_extension="/usr/local/lib/php/20100525/ioncube/ioncube_loader.so"
zend_extension="/usr/local/lib/php/20100525/eaccelerator.so"

na sam koniec
Tak poza tym wszystko raczej ok
lewyx84
ok, przeniesione.
Na innym forum, kazano mi zrobić taki test i opisać gdzie jaki wynik w konsoli, a jaki w przeglądarce.
Może to Ci w jakiś sposób pomoże

1.
Kod
<?php
var_dump((bool)$value ?: false);
?>

konsola
Kod
PHP Notice:  Undefined variable: value in /usr/home/lewy/www/microserwis.pl/php/1.php on line 2
bool(false)

www również false

2.
Kod
<?php
$value = (bool)true;
var_dump($value ?: false);
?>

konsola true, przeglądarka false

3.
Kod
<?php
$value = TRUE;
var_dump($value ?: false);
?>

konsola true, przeglądarka false
Pyton_000
z ciekawości wszedłem na
Cytat
microserwis.pl/php/1.php

i dostałem true :-|
lewyx84
ok, ale kod którym sugeruje się ichni programista to:
Kod
<?php
$value = true;
var_dump($value ?: false);
?>


A w 1.php jest
Kod
<?php
$value = true;
var_dump((bool)$value ?: false);
?>


Czy programista ma zły kod na to wychodzi, dobrze myślę?

Jednak również, kod programisty wklepany na
http://sandbox.onlinephpfunctions.com/

w wersji 5.4.21 pokazuje
bool(true)
Pyton_000
Ta zagadka nadaje się do Archiwum X smile.gif
lewyx84
Dokładnie, bo wygląda na to, że róznica jest tylko w dodaniu
Kod
((bool)

pomiędzy var_dump a $value ?: false);

Może w wersji 5.4.21 działa bez tego, nie wiem, nie znam się biggrin.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.