【问题标题】:Can't import database through phpmyadmin无法通过 phpmyadmin 导入数据库
【发布时间】:2013-04-21 11:58:12
【问题描述】:

当我尝试上传数据库 (794 kb) 时出现错误:

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.

我已经阅读了很多关于这个错误的答案,但我找不到适合我的决定和答案。

我的服务器:

Ubuntu 12.10 服务器

Apache/2.2.22 (apache2-mpm-itk);

MySQL客户端版本:5.5.27

phpmyadmin 3.4.11.1deb1;

nginx/1.2.1;

PHP 5.4.6

/etc/nginx/default中配置phpmyadmin

 location /phpmyadmin {

                root /usr/share/phpmyadmin;
                index index.php;

                proxy_pass http://backend/phpmyadmin;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_connect_timeout 120;
                proxy_send_timeout 120;
                proxy_read_timeout 180;

}

php.ini 配置

file_uploads = On
upload_tmp_dir = /var/tmp
upload_max_filesize = 128M
max_file_uploads = 30
post_max_size = 128M

谢谢!

【问题讨论】:

  • 如果您没有通过 phpmyadmin 中的browse 按钮选择您的文件,您将收到此消息。是你的情况吗?
  • 检查你的临时文件夹是否有来自 php 的写权限
  • @Amir 不,我通过 phpmyadmin 中的浏览按钮选择文件,提交时出现此错误。
  • @Raidenace 我做了chmod -R 777 /var/lib/phpmyadmin/tmp/ 并且一切正常,但我现在不这样做,如果它是好的做法,如果它是安全的。
  • @denys281 - 通常 tmp 文件夹确实具有宽松的权限,因为它们只是数据的临时占位符。话虽如此,如果您在本地主机上工作,那很好。在服务器端,此类目录的权限将由系统管理员正确设置。很高兴它帮助解决了您的问题..

标签: php mysql nginx phpmyadmin apache2


【解决方案1】:

在我的基本 php.ini 配置中,我禁用了 file_uploads 并限制了上传大小,因此如果需要,可以针对每个虚拟主机修改这些值。

PMA 使用自己的 apache 配置,该配置位于:

/etc/phpmyadmin/apache.conf

所以为了启用文件大小限制为 10Mb 的文件上传,我编辑了这样的文件:

<Directory /usr/share/phpmyadmin>
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php

    # Enable File loads if required
    php_admin_flag file_uploads On
    php_admin_flag post_max_size 10M
    php_admin_flag upload_max_filesize 10M

    <IfModule mod_php5.c>
    ...
    </IfModule>
    <IfModule mod_php.c>
    ...
    </IfModule>
</Directory>

不要忘记重新加载 Apache 服务器配置:

Ubuntu

service apache2 reload

Ubuntu = 16.04

systemctl reload apache2

【讨论】:

    【解决方案2】:
    chown apache-user /var/lib/phpmyadmin/tmp
    

    apache-user 替换为 /etc/apache2/envvars 中配置的用户。查找这些设置:

    export APACHE_RUN_USER=apache-user
    export APACHE_RUN_GROUP=apache-group
    

    这样,您将授予在 web 服务器上运行的用户访问 temp 目录的权限,而不会将其设置为 777(对所有用户开放)。

    【讨论】:

    • 谢谢你。这可以解决以下问题:您已将 APACHE_RUN_USER 更改为 www-data 以外的其他内容(就像我所做的那样,清除权限 + 在 localhost 上开发的上传问题)。
    【解决方案3】:

    感谢@denys281,这对我有帮助:

    chmod -R 777 /var/lib/phpmyadmin/tmp
    

    【讨论】:

    • 这行代码现在会在我的笔记本上。它为我节省了很多时间!非常感谢!
    • 这会带来安全风险,因为服务器上运行的任何 PHP 脚本都可以访问该目录。
    【解决方案4】:

    将“upload_max_filesize = 128M”减少 1 MB 左右。这个技巧会奏效

    【讨论】:

      猜你喜欢
      • 2019-06-29
      • 2014-08-06
      • 2012-03-24
      • 2012-03-24
      • 2015-07-11
      • 2021-05-26
      • 2013-08-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多