Error in phpMyAdmin after updating to v4.8.0: The $cfg['TempDir'] (./tmp/) is not accessible

PhpMysqlLinuxPhpmyadmin

Php Problem Overview


phpMyAdmin worked fine with v4.7.9. Now after updating to v4.8.0 today (replacing the old phpmyadmin folder against the new one) I'm getting this message in phpMyAdmin:

> The $cfg['TempDir'] (./tmp/) is not accessible. phpMyAdmin is not able > to cache templates and will be slow because of this.

I added the folder ./tmp/ like like this: /usr/share/tmp

phpMyAdmin is on: /usr/share/phpmyadmin

This didn't change anything.

Who know this error? What can I do?

Php Solutions


Solution 1 - Php

Solution was to create a folder called tmp like this: /usr/share/phpmyadmin/tmp.

Also make sure that the user (or group) running the webserver (e.g. Apache) has write access to the newly created tmp folder. Consequently, change the ownership to that user or add write access for all users. The latter one might not be really advisable.

Solution 2 - Php

simple fix is to create tmp dir in your phpmyadmin dir and set permission to 777

mkdir tmp && chmod 777 tmp

then

update your config.inc.php file add that line

$cfg['TempDir'] = 'tmp';

Solution 3 - Php

I had this same problem on Ubuntu 18.04 when I replaced the phpMyAdmin version from the package repository (v4.6.6) with the latest version (4.8.0). I don't know if you are running on Ubuntu, but maybe my response will be helpful to you (or others) who encounter something similar.

I put the new version in the standard location, /usr/share/phpmyadmin/, but Ubuntu's package installation of PMA puts some configuration settings in other places (see /etc/phpmyadmin/ and /var/lib/phpmyadmin/). I found this setting in /etc/phpmyadmin/apache.conf:

php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp

and sure enough that directory had been created and had the proper permissions. Wanting to stay as close as possible to the package installation settings, I made this change in /usr/share/phpmyadmin/libraries/vendor_config.php and pointed directly to that folder:

//define('TEMP_DIR', './tmp/');
define('TEMP_DIR', '/var/lib/phpmyadmin/tmp/');

This setting is picked up by /usr/share/phpmyadmin/libraries/config.default.php (which you are not supposed to edit) to set $cfg['TempDir'].

Solution 4 - Php

In my case I added

$cfg['TempDir'] = '/usr/share/phpmyadmin/temp';

to the

> config.inc.php File within the phpmyadmin folder

Hope it will help someone

Solution 5 - Php

Create a temp directory owned by and restricted to the webserver user. Do not place it inside of the phpMyAdmin webroot. (In this example, the webserver runs as apache):

mkdir -p /var/tmp/phpMyAdmin
chown apache:apache /var/tmp/phpMyAdmin
chmod 700 /var/tmp/phpMyAdmin

Next, set TempDir inside of phpMyAdmin's config.inc.php:

$cfg['TempDir'] = '/var/tmp/phpMyAdmin';

Any answer suggesting that you create /usr/share/phpmyadmin/tmp is advocating bad security practice. This is generally true for temp directories, and explicitly stated in the official phpMyAdmin documentation:

> For security reasons, all directories should be outside the tree > published by webserver.

Solution 6 - Php

For me phpmyadmin dir was found inside /opt/lampp/

  1. open teminal inside /opt/lampp/phpmyadmin/
  2. give root privileges to the terminal by typing sudo su command.
  3. now in same terminal use (mkdir -p /tmp/) hit enter
  4. now, chmod 777 /tmp
  5. Inside phpmyadmin directory there is a file config.inc.php. Open it using same terminal .
  6. add this line $cfg['TempDir'] = /tmp; and Save.
  7. Now you are good to go , just reload the tab and the error will be gone.

Solution 7 - Php

Create a tmp folder in the base directory of the phpMyAdmin install (e.g. /usr/share/phpmyadmin/tmp), and make sure that it is writable by the user that PHP is running under.

Solution 8 - Php

From the phpMyAdmin documentation:

$cfg['TempDir']
    Type:	string
    Default value:	'./tmp/'

The name of the directory where temporary files can be stored. It is used for several purposes, currently:

The templates cache which speeds up page loading. ESRI Shapefiles import, see 6.30 Import: How can I import ESRI Shapefiles?.

To work around limitations of open_basedir for uploaded files, see 1.11 I get an ‘open_basedir restriction’ while uploading a file from the import tab..

This directory should have as strict permissions as possible as the only user required to access this directory is the one who runs the webserver. If you have root privileges, simply make this user owner of this directory and make it accessible only by it:

chown www-data:www-data tmp
chmod 700 tmp

If you cannot change owner of the directory, you can achieve a similar setup using ACL:

chmod 700 tmp
setfacl -m "g:www-data:rwx" tmp
setfacl -d -m "g:www-data:rwx" tmp

If neither of above works for you, you can still make the directory chmod 777, but it might impose risk of other users on system reading and writing data in this directory.

Solution 9 - Php

well,in my case this error has occured when i was using ubuntu 18.04. All you need is to go to the installation directory (in ubuntu - opt/lampp/phpmyadmin) and create a folder tmp with all the suitable read/write permissions.

Follow these steps in case of ubuntu-

1.go to the PMA installation directory by typing following commands in cmd-

> cd opt/lampp/phpmyadmin

2.Then type the following command-

> sudo mkdir tmp && chmod 777 tmp

and then you are done..!! I hope it helps..

Solution 10 - Php

For Arch and Manjaro users:

Create a folder tmp at /etc/webapps/phpmyadmin/ - mkdir /etc/webapps/phpmyadmin/tmp

Set permission to 777 - chmod 777 /etc/webapps/phpmyadmin/tmp

Add this line to the config file at /etc/webapps/phpmyadmin/config.inc.php - $cfg['TempDir'] = '/tmp';

Cheers :)

Solution 11 - Php

  1. create the tmp folder

    mkdir /usr/share/phpmyadmin/tmp

  2. findout your php user

    whoami; ?>

  3. Change ownership of the tmp folder to the php user found in step 2

    sudo chown -R step2phpuser:step2phpuser /usr/share/phpmyadmin/tmp

  4. Signout of phpmyadmin and sign back in

Solution 12 - Php

I had the same error message. I'm using Ubuntu16.04 with lampp. You should go to 'phpmyadmin' directory, in my case '/opt/lampp/phpmyadmin/', create a new 'tmp' folder. Open a terminal window and:

cd YOUR_PATH_TO_PHPMYADMIN
sudo mkdir tmp

Now you have to change the group of the 'tmp' folder to give access to php user. In order to find it, you can create a php file inside your localhost directory, in my case 'htdocs'

sudo touch user.php
sudo nano user.php

Inside nano editor, type:

<?php echo `whoami`; ?>

Then press CTRL + O and CTRL + X to save and exit. Open the browser and type in your address bar

localhost/user.php

It shows your php user.

After that, go to the terminal and navigate to your recently created 'tmp' directory inside phpmyadmin directory and type:

sudo chgrp YOUR_PHP_USER tmp -R

And change the permission to the 'tmp' directory:

sudo chmod 775 tmp -R

I recommend never give 777 permission to any file.

I hope it helps!

Solution 13 - Php

In my case [MacOs El Capitán/portuguese], the message was:

The $cfg['TempDir'] (./temp/) is not accessible

My solution, in xamppfiles/phpmyadmin/config.inc.php:

$cfg['TempDir'] = './temp/'; to $cfg['TempDir'] = '../temp/';

That is, I just added a point to the path... work's fine.

Solution 14 - Php

I just changed my vendor_config.php file to define('TEMP_DIR', '/tmp/'); instead of define('TEMP_DIR', './tmp/');

This seems to work.

Solution 15 - Php

I had a similiar problem, with the "temp" directory. The solution was to change the owner and group of the "twig" directory (inside "temp") to "apache" (both owner and group)

Solution 16 - Php

Create the tmp folder in the root of phpmyadmin files

In addition to that, you also need to provide all permissions to that folder. That's what I did in Windows.

Solution 17 - Php

I had the same problem but none of the answers above could solve. In my case my php security settings was so strict protecting php to access directories out of scope defined in open_basedir located at my /etc/php.d/99-security.ini(which I added perviously from a security toturial and the settings also could be located at /etc/php.ini file in your case):

;; Limit PHP Access To File System
; Limits the PHP process from accessing files outside
; of specifically designated directories such as /var/www/html/
open_basedir="/home/:/etc/phpMyAdmin/:/var/lib/phpMyAdmin/"

change to:

open_basedir="/home/:/etc/phpMyAdmin/:/var/lib/phpMyAdmin/:'/usr/share/phpmyadmin/tmp/"  ;<== changing to this solved the prblem

you just need to add your own directory in error mesage ('/usr/share/phpmyadmin/tmp/') and the end of open_basedir option. Don't forget placing separator : before adding it.

Solution 18 - Php

If the folder already exists for example from a previous installation:

chmod -R 777 PATH_TO_FOLDER

Therefore permission on subdirectories are also modified (recursively).

Solution 19 - Php

My Answer goes to centos 7 Sentora users, tmp folder has to be created under phpMyadmin of Sentora as shown below

cd /etc/sentora/panel/etc/apps/phpmyadmin/
sudo mkdir tmp

>After creating the folder make sure you give Apache access permissions to the tmp folder

chown -R apache /etc/sentora/panel/etc/apps/phpmyadmin/tmp/

Solution 20 - Php

simply go to the phpmyadmin folder and put this code

$cfg['TempDir'] = './tmp/';

and then check tmp folder is exists or not into phpmyadmin if not exists then create tmp folder and give read and right permission to it.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDavidView Question on Stackoverflow
Solution 1 - PhpDavidView Answer on Stackoverflow
Solution 2 - Phpuser889030View Answer on Stackoverflow
Solution 3 - PhpwevremView Answer on Stackoverflow
Solution 4 - PhpIshimwe Aubain ConsolateurView Answer on Stackoverflow
Solution 5 - PhprsandenView Answer on Stackoverflow
Solution 6 - PhpKshitij MishraView Answer on Stackoverflow
Solution 7 - Phpjormaster3kView Answer on Stackoverflow
Solution 8 - PhpGerard FrijtersView Answer on Stackoverflow
Solution 9 - PhpNakshtra PradhanView Answer on Stackoverflow
Solution 10 - PhpAlbinView Answer on Stackoverflow
Solution 11 - PhpKareemView Answer on Stackoverflow
Solution 12 - PhpNirlan Neckir ZamprognoView Answer on Stackoverflow
Solution 13 - PhpCarlos FreireView Answer on Stackoverflow
Solution 14 - Phpsmack7sView Answer on Stackoverflow
Solution 15 - PhpAriView Answer on Stackoverflow
Solution 16 - PhpPishang UjeniyaView Answer on Stackoverflow
Solution 17 - PhpMojtaba RezaeianView Answer on Stackoverflow
Solution 18 - PhpdormastaView Answer on Stackoverflow
Solution 19 - PhpBagumaView Answer on Stackoverflow
Solution 20 - Phpuser6609090View Answer on Stackoverflow