Se open_basedir
estiver definido em seu php.ini, o PHP não poderá acessar os arquivos acima desse diretório.
Sempre que tento enviar um arquivo para importar para o phpMyAdmin, recebo o seguinte erro:
File could not be read
phpMyAdmin é o único script php que estou executando no meu servidor e, como tal, meu arquivo de configuração do php é bastante bajulador, exceto pelas seguintes alterações:
upload_tmp_dir = /tmp
upload_max_filesize = 10M
post_max_size = 50M
memory_limit = 64M
O arquivo que estou tentando importar é de 4MB, bem dentro do tamanho de upload de 10MB e tamanho de postagem de 50MB (também é UTF-8). Configurar o upload_tmp_dir na verdade corrigiu um problema anterior que eu estava tendo (onde o phpMyAdmin estava reclamando que eu nem especificava um arquivo) ou pelo menos fez o erro mudar para o que estou recebendo agora. As permissões em / tmp são 777.
Qual poderia ser o problema? O arquivo vem de uma instalação de cpanel no hostmonster que estou migrando para meus próprios vps. Eu tentei obter o arquivo sql do utilitário de backup do cpanel e de sua instalação do phpMyAdmin (ambos descompactados e gzipped). Eu não acredito que os arquivos estejam corrompidos.
Informações extras: Estou executando o CentOS 5.6, o phpMyAdmin 3.4.2, o mysql 5.1.52 e o php 5.2.16.
Eu acho que o problema é a configuração de php.ini
:
upload_tmp_dir = /tmp
open_basedir = /data/home/:/tmp/
O open_basedir
precisa adicionar o /tmp/
também
Eu acho que você pode configurar isso no arquivo de configuração php.ini:
upload_tmp_dir = /tmp
open_basedir = /var/www:/data/home:/tmp
Mas, não adicione a última barra dos diretórios de destino. Fundada na documentação do php:
When you want to restrict access to only the specified directory, end with a slash. For example: open_basedir = /dir/incl/