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.