Esta deve ser a maneira ainda mais eficiente e portátil:
find . -name "*.php" -exec sh -c \
'for i; do php "$i" > "$(dirname "$i")/$(basename "$i" .php).html"; done' sh {} +
ou o mais simples e ainda mais portátil graças aos comentários de Stephane Chazelas:
find . -name "*.php" -exec sh -c \
'for i do php "$i" > "${i%.*}.html"; done' sh {} +
O último também corrige a questão do nome do diretório estranho que Stephane notou.