Lo que mencionas no depende de PHP, depende del servidor HTTP que estés usando.
La forma más simple de evitar que listen los contenidos de un directorio es simplemente colocar un index.html en blanco en el directorio.
Si el servidor fuese Apache por ejemplo, podrías, en vez de usar un index.html en blanco, utilizar un .htaccess y definir reglas de acceso (cosas como Options -Indexes) o usar mod_rewrite, no obstante el poder usar un htaccess depende de la configuración del servidor por lo que es más simple usar un index.html en blanco.
Ahora, qué tanto pueda evitar que crawlers puedan acceder al contenido en realidad depende de varios factores como la calidad del crawler/spider, los enlaces que hayan en una página públicamente accesible en el mismo sitio que lleven a contenidos en el directorio que deseas proteger, la configuración del servidor HTTP para no responder o simplemente negar peticiones hechas por ciertos user agents, incluso un robots.txt podría facilitar el trabajo de saber qué hay allí si dicho archivo de texto contiene referencias a dichos contenidos.
En cualquier caso, en lo que le compete a PHP, poco hay por hacer, a lo sumo tener un index.php que niegue cierto tipo de peticiones, o agentes de usuario, o similares, por ejemplo, algo que sería fácil de implementar en un index.php es:
Código PHP:
<?php
if ($_SERVER['REQUEST_METHOD']) {
header('HTTP/1.0 401 Unauthorized');
}
?>