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:-
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á usarLOAD_FILE()
. Caso encerrado.
Em teoria, você poderia usarFTP
ouSFTP
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.
-
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 usardirname()
e__DIR__
para compor o caminho para asimagens
diretório a partir do caminho do script atual.
-
O usuário que você usa para se conectar ao servidor MySQL deve ter oARQUIVO
privilégio. O privilégio é concedido ao usuário por um DBA.
-
O arquivo deve ser legível por todos. Esta é a parte mais fácil. Quando você executals -l
no arquivo, os três últimos símbolos na coluna de direitos do arquivo devem serrw-
our--
(não faz sentido ter o bit executável definido).
-
O valor padrão demax_allowed_packet
variável de sistema é4 MiB
mas um DBA pode alterá-lo. Você pode executarSELECT @@max_allowed_packet FROM dual
para descobrir seu valor atual.
-
Se osecure_file_priv
variável do sistema estiver definida, o caminho que você fornecer deverá ser relativo a esse diretório. Novamente, você pode executarSELECT @@secure_file_priv FROM dual
para encontrar seu valor atual.