Mengatasi error TempNam() Laravel di Cyberpanel

By | 15 Agustus 2026

Jika teman-teman mengalami error tempNam pada saat deploy laravel, terutama yang menggunakan cyberpanel. Berikut pengalaman saya mengalaminya dan akan saya bagikan cara penyelesaianya.

# cek permission & owner folder krusial
ls -la storage/
ls -la storage/framework/
ls -la storage/framework/views storage/framework/cache storage/framework/sessions
ls -la bootstrap/cache

Nanti akan muncul siapa ownernya. Lalu buatkan kode php untuk mengetahui owner dari webservernya.

cat > public/diagnose.php << 'EOF'
<?php
echo "User: " . get_current_user() . "\n";
echo "UID: " . posix_getuid() . "\n";
echo "open_basedir: " . ini_get('open_basedir') . "\n";
echo "sys_temp_dir: " . sys_get_temp_dir() . "\n";
$testPath = __DIR__ . '/../storage/framework/views';
echo "Target dir writable: " . (is_writable($testPath) ? 'YES' : 'NO') . "\n";
$tmp = @tempnam($testPath, 'test');
echo "tempnam result: " . var_export($tmp, true) . "\n";
if ($tmp) { unlink($tmp); }
EOF
chown www-data:www-data public/diagnose.php

Akses dengan cara http://nama-website.com/diagnose.php

Nantinya akan keluar hasil sbb :

User: www-data UID: 1254 open_basedir: sys_temp_dir: /tmp Target dir writable: NO tempnam result: '/tmp/testHNIzro'

Dari data tersebut bahwa id pengguna yang menjalankan php adalah 1254. Sekarang kita lihat user dari 1254 dengan jalankan kode berikut .

getent passwd 1254

nantinya akan muncul output misal seperti ini :

pdfpe4033:x:1254:1254

dari hasil tsb kita bisa tau bahwa usernya adalah pdfpe4033. Sekarang tinggal kita ganti ownershipnya dengan cara chown:

# hapus dulu file diagnose.php yang tadi dibuat (keamanan)
rm -f public/diagnose.php

# chown seluruh project ke user vhost yang benar
chown -R pdfpe4033:pdfpe4033 /home/nama-website.com/laravelProject

# pastikan permission storage & bootstrap/cache tetap writable
chmod -R 775 storage bootstrap/cache

# bersihkan cache lama biar Laravel compile ulang semua dari awal
php artisan view:clear
php artisan cache:clear
php artisan config:clear
php artisan optimize:clear

Silahkan cek ulang. Seharusnya sudah bisa. Semoga membantu!