LOAD_FILE()
MySQL関数:
ご覧のとおり、 LOAD_FILE()を呼び出す理由は無数にあります。 失敗:
-
このファイルは、MySQLサーバーが実行されているコンピューターに存在する必要があります。これは、PHPスクリプトが実行されるコンピューターと常に同じであるとは限りません(これはセキュリティ上の理由から発生します)。それらが異なるコンピューターで実行されている場合は、おそらく
LOAD_FILE()を使用できません。 。ケースを閉じました。理論的には、
FTPを使用できます またはSFTPMySQLが実行されているコンピューターでファイルを転送しますが、同じセキュリティ上の理由から、おそらくそのコンピューターにアクセスできません。 -
あなたの場合、PHPとMySQLの両方が同じコンピューターで実行されていると仮定すると、
/images/picture.jpgはURLのパスコンポーネントであり、ファイルシステム上のパスではありません。dirname()を使用できます および__ DIR __imagesへのパスを作成します 現在のスクリプトのパスから始まるディレクトリ。 -
MySQLサーバーへの接続に使用するユーザーは、
ファイルコード>特権。特権はDBAによってユーザーに付与されます。 -
ファイルはすべての人が読み取れる必要があります。これが最も簡単な部分です。
ls -lを実行すると ファイルでは、ファイル権限の列の最後の3つの記号はrw-である必要があります またはr-(実行可能ビットを設定しても意味がありません)。 -
max_allowed_packet<のデフォルト値/ code>システム変数は4MiBです しかし、DBAはそれを変更することができます。SELECT @@ max_allowed_packet FROM dualを実行できます 現在の値を確認します。 -
secure_file_priv> システム変数が設定されている場合、指定するパスはこのディレクトリからの相対パスである必要があります。ここでも、SELECT @@ secure_file_priv FROM dualを実行できます。 現在の値を見つけるために。