我正在执行此操作SELECT LOAD_FILE("/home/user/domains/example.com/public_html/robots.txt") AS tmp FROM tmpTable
但它返回NULL。我如何检查这是否是因为我没有获得FILE权限或者是否还有别的东西? MySQL不会出错。 (我正在使用PHP)
任何有LOAD_FILE经验的人,请告诉我这个函数:)
<?php
$result = mysql_query('SELECT LOAD_FILE("/home/user/domains/example.com/public_html/robots.txt") AS tmp FROM tmpTable') or die(mysql_error());
while($row = mysql_fetch_assoc($result))
{
var_dump( $row['tmp'] );
}
答案 0 :(得分:5)
可以在这里找到一个非常难看的解决方法:
http://angkatbahu.blogspot.com.es/2011/03/mysql-loadfile-function-in-ubuntu-it_12.html
如果你把你要加载的文件放在/ var / lib / mysql / all_images目录下,它就可以了!
在ubuntu 12.10中测试过(并且没有,chomd'ing文件给mysql用户,没用)
答案 1 :(得分:4)
看起来Linux发行版上的某些版本的MySQL有LOAD_FILE函数的错误。这是the thread。在线程的最后看起来可能有一个解决方法。
编辑:
由于您是在共享主机上,查看所需的功能,您只需阅读该文件吗?使用file()应该将文件读入数组格式。
答案 2 :(得分:1)
要查看您拥有的权限,请使用show grants
。
我已经记录了一些额外的命令,您可以使用这些命令检查您是否符合以下条件:
我将对文件做出补充。确保:
父目录的许可示例:
mysql> \! ls -ld `dirname /home/jlam/code/projectName/doc/filesForTesting/images/imageTest01.jpg` drwxrwxr--. 2 jlam jlam 4096 May 12 14:22 /home/jlam/code/projectName/doc/filesForTesting/images mysql> select hex(LOAD_FILE('/home/jlam/code/projectName/doc/filesForTesting/images/image Test01.jpg')); +-------------------------------------------------------------------------------------------------------------+ | hex(LOAD_FILE('/home/jlam/code/projectName/doc/filesForTesting/images/imageTest01.jpg')) | +-------------------------------------------------------------------------------------------------------------+ | NULL | +-------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> \! chmod o+x /home/jlam/code/projectName/doc/filesForTesting/images mysql> \! ls -ld `dirname /home/jlam/code/projectName/doc/filesForTesting/images/imageTest01.jpg` drwxrwxr-x. 2 jlam jlam 4096 May 12 14:22 /home/jlam/code/projectName/doc/filesForTesting/images mysql> select hex(LOAD_FILE('/home/jlam/code/projectName/doc/filesForTesting/images/imageTest01.jpg')); +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | hex(LOAD_FILE('/home/jlam/code/projectName/doc/filesForTesting/images/imageTest01.jpg')) +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | FFD8FFE1001845786966000049492A00080000000000000000000000FFEC00114475636B7900010004000000500000FFE10407687474703A2F2F6E732E61646F62652E636F6D2F7861702F312E302F003C3F787061636B657420626567696E3D22EFBBBF222069643D2257354D304D7043656869487 +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
用户权限示例:
16:38:09 (getImages) ~/code/projectName/doc/filesForTesting/images$ mysql -u eventCal -p eventCal Enter password: mysql> show grants; +-----------------------------------------------------------------------------------------------------------------+ | Grants for eventCal@localhost | +-----------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'eventCal'@'localhost' IDENTIFIED BY PASSWORD '*xxxxx' | | GRANT ALL PRIVILEGES ON `tmp`.* TO 'eventCal'@'localhost' | | GRANT ALL PRIVILEGES ON `eventCalTesting`.* TO 'eventCal'@'localhost' | | GRANT ALL PRIVILEGES ON `eventCal`.* TO 'eventCal'@'localhost' | | GRANT ALL PRIVILEGES ON `eventCal_categoryMigration`.* TO 'eventCal'@'localhost' | +-----------------------------------------------------------------------------------------------------------------+ 5 rows in set (0.00 sec) mysql> select hex(LOAD_FILE('/home/jlam/code/projectName/doc/filesForTesting/images/imageTest01.jpg')); +-------------------------------------------------------------------------------------------------------------+ | hex(LOAD_FILE('/home/jlam/code/projectName/doc/filesForTesting/images/imageTest01.jpg')) | +-------------------------------------------------------------------------------------------------------------+ | NULL | +-------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
在其他根会话中:
mysql> grant file ON *.* to eventCal@localhost; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
回到用户会话,我仍然无法加载文件
mysql> select hex(LOAD_FILE('/home/jlam/code/projectName/doc/filesForTesting/images/imageTest01.jpg')); +-------------------------------------------------------------------------------------------------------------+ | hex(LOAD_FILE('/home/jlam/code/projectName/doc/filesForTesting/images/imageTest01.jpg')) | +-------------------------------------------------------------------------------------------------------------+ | NULL | +-------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
.....但如果我退出并重新登录:
mysql> exit Bye 16:40:14 (getImages) ~/code/projectName/doc/filesForTesting/images$ mysql -u eventCal -p eventCal Enter password: mysql> select hex(LOAD_FILE('/home/jlam/code/projectName/doc/filesForTesting/images/imageTest01.jpg')); +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | hex(LOAD_FILE('/home/jlam/code/projectName/doc/filesForTesting/images/imageTest01.jpg')) +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | FFD8FFE1001845786966000049492A00080000000000000000000000FFEC00114475636B7900010004000000500000FFE10407687474703A2F2F6E732E61646F62652E636F6D2F7861702F312E302F003C3F787061636B657420626567696E3D22EFBBBF222069643D2257354D304D7043656869487 +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------