記錄一個簡單的錯誤。
背景
用的是PhpOffice/PhpSpreadsheet
在本地環境下是可以正常導出excel的。但是線上就不行。
就會報錯unexcepted identifier “Closure”,好像是不能用匿名函數。
首先
本地可以正常導出,然后服務器上不可以。看了各種日志。php日志、nginx日志、tp框架的日志。就是找不到毛病。
然后開始排查php擴展,php本地的擴展,在服務器上都安裝了。
還各種修改文件夾的權限,還是沒用。
在php.ini中還禁用函數,但是都沒有作用。
我連代碼都重新clone的一遍。
解決
最后屈服了,把服務器上的php8.0換成了php8.2,(和本地環境一致。)然后就OK了。
需要注意的是:
寶塔環境下,不能單純的切換php版本。要把nginx的配置文件也要改掉!
location ~ \.php$ {fastcgi_pass unix:/tmp/php-cgi-82.sock; # 改為與PHP-FPM配置一致fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;# ThinkPHP 專用參數fastcgi_param PATH_INFO $fastcgi_path_info;}