Aunque PHP 4 viene con una gran cantidad de características, funciones y extensiones nuevas, puede que aun encuentre funciones de la versión 3 que hacen falta. Un número pequeño de funciones centrales han desaparecido ya que no funcionan con el nuevo esquema de separación de análisis sintáctico y ejecución que se introdujo en PHP 4 con el motor Zend. Otras funciones, e incluso extensiones completas, se han marcado obsoletas a medida que nuevas funciones y extensiones cubren las mismas tareas y en ocasiones en una forma más general. Algunas funciones simplemente no han sido portadas aun y finalmente algunas funciones o extensiones pueden faltar debido a conflictos de licencias.
Dado que PHP 4 separa ahora el análisis sintáctico de la ejecución, ya no es posible modificar el comportamiente del analizador sintáctico (embebido ahora en el motor Zend) en tiempo de ejecución, dado que el análisis ya ha ocurrido para entonces. De modo que la función short_tags() ya no existe. Aun puede modificar el comportamiento del analizador sintáctico definiendo los valores apropiados en el archivo php.ini.
Otra característica de PHP 3 que no es parte de PHP 4 es la interfaz de depuración integrada. Existen adiciones de terceros para el motor Zend que añaden funcionalidades similares.
Las extensiones de bases de datos Adabas y Solid ya no existen. Larga vida a la extensión unificada ODBC en su lugar.
unset(), aun cuando sigue estando disponible, es implementada ahora como una construcción del lenguaje en lugar de una función.
Esto no tiene consecuencia alguna en el comportamiento de unset(), pero realizar una prueba con "unset" usando function_exists() devolverá FALSE del mismo modo que ocurriría con otras construcciones del lenguaje que tienen apariencia de funciones, como echo().
Otro cambio más práctico es que ya no es posible llamar unset() indirectamente, esto es, $func="unset"; $func($alguna_variable) no funcionará más.