Критики към езика

* В по-старите версии на езика по подразбиране съществува функционалност, чрез която крайните потребители могат да подават направо променливи към PHP скрипта (register_globals). Настройката по подразбиране е премахната от версия 4.2.0, но съществуват все още много стари приложения, които предполагат употребата на тази функция.
* PHP не поддържа напълно Unicode. Пълната поддръжка се предвижда в PHP 6.
* PHP не поддържа именни пространства - т.е. всички функции се намират в едно именно пространство.
* Съществуват много функции на библиотеки с идентична функционалност.
* Няма изградена конвенция за именуване и подреждане на аргументите на вградените функции в PHP, което прави необходимо постоянно консултиране с документация при работа с PHP.
* PHP няма вградена поддръжка на нишки (threads), което прави обработката на големи масиви от данни много трудна: страницата не се зарежда преди целият масив от данни да е преработен и ако потребителят прекъсне зареждането ѝ (и уеб сървърът разрешава прекъсване на заявката), прекъсва и обработката на данните.
* Обръщенията към неинициализирани променливи и елементи на масив са разрешени в PHP, което прави възможно допускането на трудни за откриване правописни грешки.
* PHP използва т. нар. "magic quotes", които са създадени с цел да предпазват начинаещите програмисти, но объркват по-напредналите.
* Понякога се среща неконсистентност между поведението на PHP в различните версии, което предизвиква необходимостта от пренаписване на скриптовете, писани за стари версии на езика.