环境:
- 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
并尝试过
- 更改了 /etc/apache2/sites-available/000-default.conf 中的 DocumentRoot
- 尝试设置 php.ini - upload_tmp_dir
- 尝试将.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。