溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

laravel日志寫入失敗問題有哪些

發(fā)布時(shí)間:2021-04-30 15:04:08 來(lái)源:億速云 閱讀:151 作者:小新 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)laravel日志寫入失敗問題有哪些,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

Laravel 是什么

Laravel 是一套簡(jiǎn)潔、優(yōu)雅的PHP Web開發(fā)框架。它可以讓你從面條一樣雜亂的代碼中解脫出來(lái);它可以幫你構(gòu)建一個(gè)完美的網(wǎng)絡(luò)APP,而且每行代碼都可以簡(jiǎn)潔、富于表達(dá)力。

Throw問題

項(xiàng)目部署到Linux 服務(wù)器上后有時(shí)會(huì)出現(xiàn) 每日日志無(wú)法寫入的問題。由此匯總一下常出現(xiàn)的問題及解決方式。

權(quán)限問題

導(dǎo)致無(wú)法寫入日志的問題,是由于代碼更新時(shí)添加了文件是 root 用戶,所以創(chuàng)建日志文件也是root 權(quán)限,導(dǎo)致其它用戶的 www 權(quán)限無(wú)法寫入日志文件中。

所以修改 storage/logs/ 的用戶權(quán)限為 www

chown www:www storage/logs -R

注意:如果用戶使用supervisord服務(wù)運(yùn)行隊(duì)列的話,如果隊(duì)列里有日志記錄,那么運(yùn)行的用戶也需要改成 www 用戶。

還有一種解決方式,就是修改日志的源碼。

laravel在web模式下產(chǎn)生的日志文件(storage/logs)由www-data用戶創(chuàng)建,而在命令行(php artisan)模式下是由當(dāng)前登錄系統(tǒng)用戶創(chuàng)建。

這兩個(gè)用戶不在同一個(gè)組下,就導(dǎo)致后操作的功能無(wú)法對(duì)日志文件進(jìn)行寫操作。解決這個(gè)問題需要修改Laravel在使用Monolog框架時(shí)的源代碼。

需要修改的文件在 vendor/laravel/framework/src/Illuminate/Log/Writer.php 第229行。

$handler = new RotatingFileHandler($path, $days, $this->parseLevel($level))

改為

$handler = new RotatingFileHandler($path, $days, $this->parseLevel($level),true,0777)

該代碼在useDailyFiles函數(shù)中,因?yàn)閏onfig/app.php中對(duì)日志框架的配置是

'log' => 'daily',

所以使用的是RotatingFileHandler,構(gòu)造函數(shù)中第五個(gè)參數(shù)是指定創(chuàng)建文件的權(quán)限。

用戶問題

用戶問題,也算是權(quán)限問題。我用這個(gè)方式解決的問題。

首先 crontab -l 查看定時(shí)任務(wù),laravel 的定時(shí)任務(wù)定義在這里。

crontab -e 修改定時(shí)任務(wù)。一切依舊。定時(shí)任務(wù)也執(zhí)行了。第二天,開始出現(xiàn)日志不可寫的問題。

解決步驟1:修改 crontab -u www -e 定時(shí)任務(wù)配置給 www 用戶,去掉root 的定時(shí)任務(wù)。第二天不再出現(xiàn)日志不可寫問題。

結(jié)果定時(shí)任務(wù)不再執(zhí)行。沒遇到過(guò)這樣的情況,于是同時(shí)給www 用戶和 root 用戶 都配置了 定時(shí)任務(wù)。結(jié)果還是日志不可寫。

解決步驟2:經(jīng)過(guò)一番掙扎的搜尋 ,打開了最后一次的日志。

* 號(hào) 是代表可能會(huì)有很多個(gè) cron 開頭的日志,打開最后一個(gè)即可。

vi /var/logs/cron*

如圖:

laravel日志寫入失敗問題有哪些

看到定時(shí)任務(wù)的錯(cuò)誤日志,進(jìn)入home 目錄,建立www文件夾。賦予權(quán)限。完成問題的解決。

關(guān)于“l(fā)aravel日志寫入失敗問題有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI