Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

A função load_file não está funcionando no mysql


Um breve trecho da documentação de LOAD_FILE() Função MySQL:

Como você pode ver, existem inúmeras razões para sua chamada para LOAD_FILE() falha:

  1. O arquivo deve estar presente no computador onde o servidor MySQL é executado. Este nem sempre é o mesmo computador onde o script PHP é executado (e isso acontece por motivos de segurança). Se eles forem executados em computadores diferentes, provavelmente você não poderá usar LOAD_FILE() . Caso encerrado.

    Em teoria, você poderia usar FTP ou SFTP para transferir o arquivo no computador onde o MySQL é executado, mas pelas mesmas razões de segurança, você provavelmente não terá acesso a esse computador.

  2. Supondo que, no seu caso, PHP e MySQL sejam executados no mesmo computador, /images/picture.jpg é o componente do caminho da URL, não um caminho no sistema de arquivos. Você pode usar dirname() e __DIR__ para compor o caminho para as imagens diretório a partir do caminho do script atual.

  3. O usuário que você usa para se conectar ao servidor MySQL deve ter o ARQUIVO privilégio. O privilégio é concedido ao usuário por um DBA.

  4. O arquivo deve ser legível por todos. Esta é a parte mais fácil. Quando você executa ls -l no arquivo, os três últimos símbolos na coluna de direitos do arquivo devem ser rw- ou r-- (não faz sentido ter o bit executável definido).

  5. O valor padrão de max_allowed_packet variável de sistema é 4 MiB mas um DBA pode alterá-lo. Você pode executar SELECT @@max_allowed_packet FROM dual para descobrir seu valor atual.

  6. Se o secure_file_priv variável do sistema estiver definida, o caminho que você fornecer deverá ser relativo a esse diretório. Novamente, você pode executar SELECT @@secure_file_priv FROM dual para encontrar seu valor atual.