laravel

Laravel log 的權限問題

[華語, cmn-Hant-TW] 一直以來 Laravel 預設在本機上的 log 是單一檔案 (single),當然也可以用每天產生一個檔案 (daily) 的形式,只要在 config 裡面設好即可,設定方式隨著版本不同而有所不同,不過就以往來講我會儘量還是用 single,然後用系統的工具 (newsyslog 或是 logrotate 不同系統有不同的滾動工具) 去整理成類似 /var/log 下的形式,避免檔案太大 會這樣做主要的原因還是權限,通常來講因為網頁存取產生的 log,會以 www (依系統不同,可能是 httpd 或 www-data) 的權限寫入,使用者本機操作的話,則是用使用者的權限寫入,如果檔案還沒產生的話會自動產生,自動產生的檔案一般情況下預設是 644,也就是只有本人可以存取,假設產生檔案的是本機使用者,那當網頁遇到需要寫入 log 的時候,程式就會直接炸給你看 另外一個原因是檔案要整理,在 5.6 之前的話 daily 要自己手動清太舊的 log,平平都要用程式處理,那直接丟給系統不是比較快,到了 5.6 是可以設定要留幾天份,不過一樣會遇到權限問題 避免權限問題的一般作法是在設定環境的時候先產生一個空的…

php 5.6 + apache 2.4 + laravel

[華語, cmn-Hant-TW] 最近把一些原本跑 php 5.5 跟 apache 2.2 的網站更新到 php 5.6 + apache 2.4,遇到了一些狀況,首先是 composer 在執行的時候噴出這樣子的錯誤訊息: The "https://packagist.org/packages.json" file could not be downloaded: SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failedThe "https://packagist.org/packages.json" file could not…

跑 php 頁面讓 httpd 當掉

[華語, cmn-Hant-TW] 這問題卡了一段時間,但是因為也沒太緊急所以就有空的時候才來看一下問題在哪。 總之就是有一台 FreeBSD 11-CURRENT 在某次更新一堆套件之後 laravel 的特定操作就開始會讓 httpd 吃 segmentation fault 了。因為有用到不少套件所以一層一層的追下去發現是 finfo_open() 造成的,會用到這個函式只是要找檔案的 mime-type 而已所以也沒做太奇怪的事情,接著用 laravel 直接跑內建的伺服器模式做一樣的操作,發現也會吃 segmentation fault,那差不多就確定是 php 的問題了,自己寫了一個小程式只呼叫這個函式,用 cli 模式跑一樣炸掉,當下立刻把所有名字含 php55 的套件全部更新,因為 php 跑其他東西都沒當,所以想說應該是某個 php 套件爛掉,因為當掉跟圖形操作有關,一度還以為是 gd 造成的。 結果全部用 ports 重編之後… 照當,那問題就怪了,這時候就把另一台更閒的 FreeBSD 11-CURRENT 更新到最新同時跑 php… 居然沒有當?!對照一下兩邊函式庫安裝的目錄才發現有問題那台的目錄裡面有…

Laravel 4, composer.phar 還有 nikic/php-parser

[華語, cmn-Hant-TW] Laravel 4 的標準安裝是透過 composer.phar 來達成,所以不像 Laravel 3 只要塞一個 security/php5-mcrypt 就收工。為了跑 composer.phar 至少要安裝 archives/php5-phar,然後如果希望執行 composer 的輸出有帶顏色,那需要 sysutils/php5-posix,又安裝過程中會裝到 php-parser 如果沒有 devel/php5-tokenizer 會直接噴出 “Use of undefined constant T_DOUBLE_COLON” 的錯誤訊息,所以這幾個 ports 還是給他裝一裝吧。 話說回來,這是安裝上的需求,安裝好之後只要有 mcrypt 就能用了,所以可以找一台裝好之後再丟到沒這些東西的機器上跑,只是之後要更新的話就會比較麻煩就是