Products · Product
PHP
Raised as a usability problem by 205 people on Hacker News over 19 years (2008–2026), in 179 threads.
No issue was raised by at least 3 people in 3 threads this year.
- 1
- 2
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
Every issue, all time, most people first
Inconsistent function names and argument orders are hard to rememberUnreviewed
20082026- Inconsistent function naming makes built-in functions harder to discover and remember2026-05-23
- Hard to remember which similarly named standard library function does what2025-07-03
- Accidental name collisions with built-in functions cause confusing errors and lost debugging time2024-11-21
New syntax features are confusing and hard to readUnreviewed
20082026- New PHP syntax features are confusing and complicated to read2025-11-20
- PHP is an ugly mess from Hello World onward2024-12-08
- Modern PHP is harder for beginners to learn, with many easy-to-hit footguns2021-11-18
Errors are silently swallowed, so developers can't tell something failedUnreviewed
20082026- Error messages are user hostile and hard for developers to act on2023-11-24
- Errors are logged in different places or not at all, making their source hard to find2020-10-23
- Errors were silently ignored, so developers had to discover problems through later fixes2020-02-03
Configuring PHP with a webserver is cumbersome and confusingUnreviewed
20082026- Setting up PHP requires installing FPM and reconfiguring many bad defaults, with easy-to-hit footguns2026-04-16
- Needs php.ini tweaks, extensions and a specially configured web server to deploy2023-09-10
- Setting up PHP-FPM is confusing and messy to configure2020-08-21
Numeric string keys silently converted to integers, breaking dictionariesUnreviewed
20082026- Numeric string keys silently become integer indexes, so iterating the array goes wrong2020-10-23
- Numeric-looking string keys silently become integers, causing mixed key types by accident2020-06-10
- Numeric string array keys are silently converted to integers, corrupting the dictionary unexpectedly2020-05-05
The == operator behaves so unpredictably developers are told to avoid itUnreviewed
20082026- The == operator behaves so unpredictably that developers are told to avoid it2026-06-08
- Inconsistent, error-prone API with counter-intuitive == behaviour that makes mistakes easy2019-05-15
- Comparison operators behave in surprising ways users don't expect2014-11-22
array_filter behaves oddly on key-value arrays, breaking functional codeUnreviewed
20082026- Array_filter keeps original keys, so results come back as unexpected associative arrays2025-03-23
- Array_filter behaves oddly on key-value arrays, so functional-style code breaks unexpectedly2025-02-16
- Array_filter output behaves like a map, so piping into array_map fails without extra call2021-01-30
Unreviewed issues were grouped by machine: Claude Haiku labelled each comment as a usability complaint, named what it's about and summed up the problem in a line, and a small model grouped similar problems. Nobody has checked them by hand. Expect mistakes.
The newest 50 complaints
- Installing a local WAMP stack was a hurdle that could make beginners give up2026-06-16
- The == operator behaves so unpredictably that developers are told to avoid it2026-06-08
- The loose equality operator is so unintuitive that people advise against using it2026-05-24
- Inconsistent function naming makes built-in functions harder to discover and remember2026-05-23
- Docs list functions with cryptic one-sentence descriptions and no examples, hard to learn from2026-05-07
- Setting up PHP requires installing FPM and reconfiguring many bad defaults, with easy-to-hit footguns2026-04-16
- Inconsistent parameter order and global builtins make the language messy2026-01-13
- Digging through thousands of lines in one file is exceptionally painful2025-12-23
- New PHP syntax features are confusing and complicated to read2025-11-20
- Debuggers were mostly unusable for batch processes or when server memory was limited2025-09-10
- Hard to remember which similarly named standard library function does what2025-07-03
- Array_filter keeps original keys, so results come back as unexpected associative arrays2025-03-23
- Array_filter behaves oddly on key-value arrays, so functional-style code breaks unexpectedly2025-02-16
- Requests to the old version are killed when a new version becomes active2024-12-11
- PHP is an ugly mess from Hello World onward2024-12-08
- Can't tell what keys an array contains without tracing callers up the stack2024-12-02
- Poor usability forced the commenter to build their own wrapper twice2024-11-21
- Manually writing getters and setters is tedious boilerplate that needs an IDE2024-11-21
- Accidental name collisions with built-in functions cause confusing errors and lost debugging time2024-11-21
- Arrays behave as sorted maps and function names are inconsistent, making the language hard to predict2024-08-05
- Can't tell what a variable holds without digging through many files2024-05-23
- Fails silently with no feedback when opening large files2024-05-04
- Massive config file with many settings makes scripts break unpredictably across servers2024-05-04
- Hard to build the language and extensions from source2024-04-10
- Upgrading PHP versions on a VPS is painful and requires specialized server knowledge2024-02-07
- Image manipulation functions remain a messy, hard-to-use API after years2023-12-28
- Error messages are user hostile and hard for developers to act on2023-11-24
- Needs php.ini tweaks, extensions and a specially configured web server to deploy2023-09-10
- Developers find the language's syntax and tooling hard to work with2023-09-09
- Too many knobs and switches with security implications, hard to explore2023-09-09
- Dynamic URLs ending in .json or .xml get served as static files instead2023-09-09
- Inconsistent function naming forces users to memorize arbitrary names2023-08-24
- Main page has no link to view current PHP version bugs2023-07-14
- Streamed responses can't show proper error pages; failures leave users with silently truncated output2023-05-18
- Inconsistent argument positions and naming make functions hard to predict2023-04-22
- Language is full of footguns and standard library has problems that trip up users2023-01-17
- Some common functions operate on input by reference in place, which is awkward2022-12-08
- Juggling PHP versions on Windows IIS was painful and hard to manage2022-11-27
- Fopen returns False with a generic warning, not the reason it failed2022-10-27
- Constructor parameters silently become properties, which is confusing and inflexible when parameters are processed first2022-10-27
- Language is a messy pile that newcomers must navigate to get anything done2022-10-16
- Built-in function parameter orders are unintuitive and hard to find or remember2022-08-03
- Standard library functions are inconsistent, so developers get surprised by behaviour2022-08-03
- REPL shows no result without echo, and functions like substr silently hide errors2022-08-03
- Experienced programmers still hit unintuitive behavior that the documentation doesn't describe2022-08-02
- Confusing that braces around variables behave inconsistently and differ from expectations2022-05-06
- Must click through many layers to infer untyped functions' contracts, lowering productivity2022-01-20
- Arrays are easy to misuse: forgotten array_values and keys silently converted to numbers2022-01-11
- Hard to discover which function to use; many deprecated alternatives to sort through2021-11-25
- Super slim scrollbar is difficult to use2021-11-25