无法上传 .sql 文件

无法上传 .sql 文件

环境:

  • Ubuntu 14.04(在 VirtualBox 下运行的本地开发机器)
  • Apache/2.4.7(Ubuntu)
  • phpMyAdmin 4.0.10deb1

我收到以下错误。我一直在阅读手册并搜索帖子,但没有任何建议有帮助。我对 Linux 和 Apache 还很陌生,所以我可能只是不明白一些东西。

Warning: Unknown: open_basedir restriction in effect. File(/tmp) is not within the allowed path(s): (/usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/javascript/) in Unknown on line 0

Warning: File upload error - unable to create a temporary file in Unknown on line 0

No data was received to import. Either no file name was submitted, or the file size exceeded the maximum size permitted by your PHP configuration. See FAQ 1.16

错误来自 phpMyAdmin。我尝试通过命令行上传,但它一直挂起,直到我退出。

我做了以下更改/etc/php5/apache2/php.ini

post_max_size = #>db size = 60M
memory_limit = #>post_max_size = 256M
upload_max_filezise = #<post_max_size 20M

并尝试过

  1. 更改了 /etc/apache2/sites-available/000-default.conf 中的 DocumentRoot
  2. 尝试设置 php.ini - upload_tmp_dir
  3. 尝试将.sql文件所在的文件夹添加到apache.conf php_admin_value open_basedir - 这只会改变错误消息。

很久以前我做过的一件事就是让 apache 在我的用户帐户下运行。我想知道这是否不是问题所在。

答案1

参见第一个链接@Litizia对帮助我解决问题的帖子进行上述评论。

/etc/phpmyadmin/apache.conf为我解决问题的具体改变是:

under <IfModule mod_php.c>

第一的:

改变
php_value include_path . 到:
php_value include_path .:/usr/share/php:/usr/share/pear

第二:

改变
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/javascript/
到:
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/javascript/:/usr/share/php:/tmp/

答案2

按照这个建议关联我们得到了答案。

让我们看看一些解释。

根据 php 文档open_basedir

当脚本尝试访问文件系统时(例如使用 include 或 fopen()),将检查文件的位置。当文件位于指定目录树之外时,PHP 将拒绝访问它。

为了允许您的脚本访问 /tmp 和您需要的其他路径,请修改 /etc/phpmyadmin/apache.conf 并添加:

  php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/javascript/:/usr/share/php:/tmp/ 

始终按照 php 文档包含路径

指定 require、include、fopen()、file()、readfile() 和 file_get_contents() 函数查找文件的目录列表。格式类似于系统的 PATH 环境变量:在 Unix 中用冒号分隔的目录列表,在 Windows 中用分号分隔的目录列表。

使用 apache 配置文件可以使用指令设置变量php_value

    php_value name value 

根据您的情况,添加:

   php_value include_path .:/usr/share/php:/usr/share/pear

最后,重新启动 apache。

相关内容