Już drugi raz mi się zdarzyło, że działająca strona nagle pada z komunikatem Cannot redeclare ....
Krótkie dochodzenie wyjaśnia, że na serwerze wgrano nową wersję PHP (lub jakiś jego dodatkowych bibliotek).
Problem polega na tym że wprowadzone nazwy nowych funkcji pokrywają się z istniejącymi moimi funkcjami!
Konkretny przykład: funkcja gethostname(), która pojawiła się w wersji PHP>=5.3.0
Kilka lat temu zdefiniowałem sobie taką funkcję, której używam w wielu skryptach i która działa inaczej niż ta dodana w PHP.
No i jest poważny problem. Nie będę przecież co chwilę zmieniał nazw swoich funkcji w miarę pojawiania się kolejnych wersji PHP. Zwłaszcza, że na wielu serwerach jest cała masa już wykonanych stron, które musiałbym przerabiać.
Czy ktoś się spotkał z takim problemem i ma sposób na to?
Moim zdaniem w takim wypadku PHP powinno wykonywać funkcję zdefiniowaną przez użytkownika i generować tylko powiadomienie (Notice) a nie Error. Czyli teoretycznie mógłbym zdefiniować swoją funkcję print() i ta oryginalna przestała by działać. W przypadku zdublowania nazw funkcji zdefiniowanych przez użytkownika Fatal Error powinien zostać. Nie wiem czy zostaje mi tylko pisać do twórców PHP żeby coś takiego uwzględnili czy jest jakieś inne rozwiązanie?
Jeżeli nie ma to ten problem będzie narastał w miarę rozwoju PHP.