Masalahnya mungkin karena pengguna Anda tidak memiliki hak untuk mengeksekusi file tersebut.
Pertama, Anda menyetel flag eksekusi untuk skrip Anda
chmod +x /home/samitha/bash.sh
Maka Anda harus memeriksa izin untuk file php dengan
ls -lah /var/www/Controller
Jika grup pengguna atau nama pengguna Anda tidak muncul, Anda harus menjalankan skrip dengan hak pengguna super atau mengubah izinnya.
Cara pertama adalah memasukkan entri Anda
sudo crontab -e
atau yang kedua adalah (yang tidak saya rekomendasikan, karena semua orang akan diizinkan untuk mengeksekusi skrip dengan memanggil situs Anda)
chmod a+x /var/www/Controller/post.php
TL;DR:Sisipkan "bash" sebelum skrip di crontab dan skrip apa pun yang dipanggil oleh skrip.
Saya punya perbaikan untuk ini. Tidak ada jawaban sebelumnya yang berhasil untuk saya. Saya memiliki dua laptop Asus yang menjalankan Kubuntu (diperbarui ke kernel v5.8) dengan konfigurasi yang hampir sama. Saya tidak tahu mengapa yang satu bermasalah dan yang lain tidak. Namun, setelah 2 hari percobaan saya menemukan perbaikan. Semoga seseorang yang lebih berpengetahuan daripada saya dapat menemukan penyebabnya.
Cron menggunakan sh bukan bash. Saya mencoba menambahkan SHELL=/bin/bash dan mendefinisikan PATH di atas perintah di crontab dan tidak berpengaruh. Semua skrip saya memiliki #!/bin/bash shebang di awal, juga tanpa efek. Izin skrip saya (dan direktori mereka) adalah 777. Skrip tidak berjalan untuk cron atau pengguna, apa pun kombinasi pengguna:grup yang saya coba pada file. Menggunakan nama jalur lengkap adalah cron dan di dalam skrip tidak memiliki efek yang berbeda dengan menggunakan variabel lingkungan.
Perbaikan saya adalah memasukkan "bash" sebelum nama file skrip di crontab. Misalnya:
00 01 * * * bash $BASH_SCRIPTS/backup_os.sh
(Ya, cron tidak memiliki masalah dengan menggunakan variabel lingkungan saya yang didefinisikan di /etc/environment.) Juga, di cron, ketika skrip menjalankan skrip lain, skrip kedua akan mendapatkan "izin ditolak" kecuali skrip tersebut dimodifikasi untuk memiliki "bash " sebelum nama file skrip ke-2, atau gunakan "sumber" jika itu sesuai dengan skrip Anda.
Pengguna yang mengeksekusi cron itu (orang yang mengeksekusi cron -e) tidak memiliki hak yang sesuai untuk mengeksekusi skrip itu. Yaitu:skrip tidak memiliki flag eksekusi, atau tidak mungkin menjangkaunya karena beberapa direktori leluhurnya tidak memiliki flag eksekusi.
Anda juga dapat mencoba solusi berikut:
chmod +x post.php
chmod +x bash.sh
echo "* * * * * /home/samitha/bash.sh >> /home/samitha/log/cron.log 2>&1" >> cronjob
chmod +x cronjob
/etc/init.d/crond start #redhat based servers like centos
/etc/init.d/cron start #debian based servers like ubuntu
crontab cronjob