4

PHP File /tmp/ Does Not Exist

 2 years ago
source link: https://edmondscommerce.github.io/php-file-/tmp/-does-not-exist/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

PHP File /tmp/ Does Not Exist

Jan 23, 2017 · 2 minute read
Category: PHP

Recently I ran into an issue with a upload issue in Akeneo when trying to include an image with a product, however the issue could happen with any PHP script.

I had provided a file path of /path/to/file.jpg in the upload, but was getting an error message of Attribute or field "picture" expects a valid pathname as data, "/tmp/path/to/file.jpg" given (for setter media)

I was surprised to see that the path had been changed to /tmp/path/to/file.jpg, but a put a copy of the file into the /tmp/ directory and tried again. This produced the same error message.

At this point I assumed that the issue had to be permissions related, so as the PHP and Nginx user made sure that I could read the file. Slightly stumped I made sure that I was working on the correct container and found that I was.

I then inserted an extra bit of debugging code to write the exception to a file in /tmp/uploadError.txt. I tried the upload again, got the same error, but could not find the newly created file.

After confirming that this logging was in the right place, I decided to scan the entire file system to see where the file had been saved, and got the following result:

root@desktop-container$ find / -type f -iname 'uploadError.txt' 
/tmp/systemd-private-c5c2073fc98d4581bb08fe6013321d9e-php-fpm.service-i9QqcK/tmp/uploadError.txt

A bit of googling indicated that this is a security feature of systemd. It can be disabled, if necessary, by editing the PHP service file ( found here /usr/lib/systemd/system/php-fpm.service and setting PrivateTmp to false.

After doing this you’ll need to reload the systemd daemon by running systemctl daemon-reload and restart PHP.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK