Import SQL en phpMyAdmin – error: File could not be read

phpMyAdminEs posible que al tratar de importar un dump .sql a través de phpMyAdmin recibamos este error:

error: File could not be read
error: El fichero no pudo ser leído

Normalmente los errores con upload en PHP y phpMyAdmin suelen estar relacionados con que el límite de tamaño especificado para las directivas upload_max_filesize y post_max_size son inferiores al tamaño del archivo a subir:

upload_max_filesize = 4M
post_max_size = 4M

En este caso el error no viene por aquí, sino con que una vez subido el fichero .sql a la ruta temporal especificada a nivel de PHP, phpMyAdmin no lo puede leer y por consiguiente no lo puede restaurar. Esto es debido a que php tiene activada la directiva/restricción open_basedir. Esta directiva se puede especificar a nivel global o por virtualhost, e indica que el virtualhost únicamente puede leer/escribir los ficheros contenidos en la ruta indicada. Si no añadimos entonces a su open_basedir la ruta temporal donde sube los ficheros PHP (normalmente /tmp o /var/tmp) recibiremos este error.

Podéis deshabilitar entonces open_basedir comentandolo en el php.ini:

;open_basedir

O añadir al virtualhost de Apache la directiva correspondiente, también se podría modificar la ruta de upload temporal para PHP de ese virtualhost desde programación.

<Directory /pma>
   php_admin_value open_basedir /var/tmp 
</Directory>