Eu uso uma estrutura como:
/var/www/sites/
/var/www/sites/project.com/
/var/www/sites/project.com/includes/
/var/www/sites/project.com/library/
/var/www/sites/project.com/www/
/var/www/sites/project.com/www/index.php
Em que /var/www/sites/project.com/www/ é definido como a raiz do documento do host virtual e eu uso index.php para incluir arquivos de library/ & includes/
Dessa forma, organizei meu projeto para ter a maior parte do PHP fora da raiz de documentos do apache - como você quer fazer. Para que o servidor não 'blat' o conteúdo de scripts PHP, etc.
No entanto - se for uma hospedagem gerenciada, você terá que jogar dentro da caixa desenhada pelo host.
Eu diria que no mesmo nível que public_html/ é um bom lugar para colocar seus diretórios com arquivos PHP. O public_html/ é equivalente a /var/www/sites/project.com/www/ em minha estrutura de diretórios de exemplo.
Quanto à natureza do diretório php/ , talvez apenas seu host saiba. Se estiver vazio, eu diria que eles estão encorajando você a usá-lo.