De forma geral, toda linguagem tem qualidades e defeitos.
Mas acredito que parte da má fama do PHP vem do seu próprio criador, graças a frases famosas como por exemplo (em tradução livre):
"Não sou um programador de verdade. Eu junto as coisas até que funcionem e sigo em frente. Programadores de verdade dirão: 'Funciona mas está vazando memória. Talvez seja melhor corrigir.' Eu digo pra reiniciar o Apache a cada 10 requisições"
"Nunca tive a intenção de criar uma linguagem de programação. Não tenho a menor ideia de como fazer uma linguagem, eu só fui adicionando a próxima coisa que fazia sentido."
Entre outras parecidas, que passa uma imagem de um certo desleixo, de que foi feita de qualquer jeito.
Nenhuma linguagem é perfeita, mas tem coisas em PHP que realmente não foram bem pensadas. O array, por exemplo, na verdade é um grande pato: anda, nada e voa, mas faz tudo isso mal. A própria documentação diz que o array "pode ser tratado como um array, uma lista (vetor), hashtable (que é uma implementação de mapa), dicionário, coleção, pilha, fila e provavelmente mais". Qualquer um que tenha estudado o mínimo de estruturas de dados sabe o quão absurdo é tentar fazer uma estrutura "tudo em um". E claro que isso é só um exemplo, mas a linguagem tem tantas pequenas - e grandes - falhas conceituais similares (leia o primeiro link indicado acima), que acabou com essa imagem de ser mal projetada.