上Mongo
你先點開wamp,看具體是哪個服務沒有啟動[php,apache,mysql],然后在相對應的服務里面找到錯誤日志,看報錯信息。
墻內(nèi)找了很長時間都沒找到,最終還是在google里找到了答案。
文檔的描述不是很清楚,其實問題在于使用javascript 接入api 認證方式應該使用默認的用戶認證 和 web中間件,而不是用passport提供的登錄方式以及 auth:api中間件
使用laravel默認的用戶認證,
php artisan make:auth
配置文件 config/auth.php 中授權看守器 guards 的 api 的 driver 選項改為 passport(估計不改也行,沒有試過,使用javascript接入api的目的是多套應用程序公用一套api,所以還是改了)
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],
將 CreateFreshApiToken 中間件添加到 web 中間件組
protected $middlewareGroups = [
'web' => [
...
\Laravel\Passport\Http\Middleware\CreateFreshApiToken::class,
],
'api' => [
'throttle:60,1',
'bindings',
],
];
http://localhost/play?make=movie&id=fqvnYxH4QnH1UB.html
http://localhost/play?movie/fqvnYxH4QnH1UB.html
RewriteRule ^\/play\?([^\/]+)\/([^\/]+)\.html$ /play?make=$1&id=$2
沒有遇到過同樣的問題
解決方案之一的話,可以直接在表單里把文件名一起傳遞過去
你選擇圖片插入的時候,圖片已經(jīng)通過接口上傳了,后臺返回給你圖片的路徑,就是你圖片中的/img/bVbcfKU
經(jīng)過一個下午的折騰,上周五還是發(fā)現(xiàn)出現(xiàn)該異常情況的原因。概括來說還是中文轉編碼的問題,即utf-8轉gbk出現(xiàn)的小部分行缺少空格或者雙引號的問題。
出現(xiàn)問題的原因:
在進行導出的過程中,接收其他程序傳過來的數(shù)組參數(shù),均為utf-8編碼,我這邊在調(diào)用fwrite或者fputcvs寫入文件的過程中并沒有進行 iconv("UTF-8", "GB2312//IGNORE", $header),而是將文件保存在了 export目錄下,然后由vuejs做的后臺調(diào)用位于同application下的一個共用類的 export方法,該方法是這樣的:
public function export()
{
$file = \Request::get('file');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename=export.csv');
header('Cache-Control: max-age=0');
$contents = file_get_contents(\Env::get('runtime_path') . '/export/' . $file);
echo iconv("UTF-8", "GB2312//IGNORE", $contents);
@unlink(RUNTIME_PATH . '/export/' . $filename);
exit;
}
問題就出在 echo iconv("UTF-8", "GB2312//IGNORE", $contents); 這句代碼上面,這里看到是對傳入的整個文件進行轉編碼的,這里未進行測試到底多少行的數(shù)據(jù)會出現(xiàn)缺少逗號引號的問題。
最終的解決思路是,把共用類中對整個文件的轉編碼放到寫入方法中,逐條轉編碼就解決了該問題。
更改后的代碼:
public static function createCsv($data, $header = [], $filename = '')
{
// 參數(shù)判斷
$data = is_object($data) ? $data->toArray() : $data;
$header = is_array($header) ? $header : [];
$filename = (1 > strlen(trim($filename))) ? 'csv-' : trim($filename);
if (empty($data)) {
return false;
}
// 文件名/目錄
$filename = $filename . date("YmdHis", time()) . rand(1000, 9999) . ".csv";
$dir = Env::get('runtime_path') . '/export/';
if (!is_dir($dir) && !mkdir($dir)) {
return false;
}
// 打開文件指針資源
$handle = fopen($dir . $filename, 'w+');
if (!$handle) {
return false;
}
// 寫入文件header頭
if (!empty($header)) {
foreach ($header as $key => $item) {
$header[$key] = iconv("UTF-8", "GB2312//IGNORE", $item);
}
$res = fputcsv($handle, $header);
if (!$res) {
return false;
}
}
// 判斷header是索引數(shù)組還是關聯(lián)數(shù)組
$is_assoc = array_keys($header) !== range(0, count($header) - 1);
// 寫入文件內(nèi)容
$frequency = 0; // 頻率
$limit = 100000;
foreach ($data as $datum) {
$frequency++;
if ($limit == $frequency) {
// 刷新輸出buffer
ob_flush();
flush();
$frequency = 0;
}
// 如果是關聯(lián)數(shù)組,則獲取內(nèi)容中和頭部key相對應的值
if ($is_assoc) {
$csv = "";
foreach(array_keys($header) as $item) {
$datum[$item] = iconv("UTF-8", "GB2312//IGNORE", $item);
$val = str_replace('"', '""', $datum[$item]); // 將單個雙引號替換為兩個雙引號
$csv .= '"' . $val . '",'; // 為每個字符增加雙引號,并添加逗號分割符
}
$csv = substr($csv, 0, -1); // 去掉每行最后一個逗號
$csv .= "\n"; // 添加換行符
$res = @fwrite($handle, $csv);
} else {
$res = fputcsv($handle, $datum);
}
if (!$res) {
return false;
}
}
// 關閉指針資源
fclose($handle);
return Url::build('erp/Common/export', 'file=' . $filename);
}
public function export()
{
$file = \Request::get('file');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename=export.csv');
header('Cache-Control: max-age=0');
$contents = file_get_contents(\Env::get('runtime_path') . '/export/' . $file);
echo $contents;
exit;
}
調(diào)用步驟:
先調(diào)用createCsv生成文件,再調(diào)用export下載。
———————————————————————分割線——————————————————————
另外一種解決思路:
csv文件直接存儲 UTF-8 編碼:
即不需要進行 iconv 轉編碼,這樣會有個小問題就是MacOS中的Excel無法自動識utf-8編碼,中文會出現(xiàn)亂碼的情況。
原因:
Excel在讀取csv的時候是通過讀取文件頭上的bom來識別編碼的,如果文件頭無bom信息,則默認按照unicode編碼讀取。(這個bom是微軟自己定義的一種文件頭部協(xié)定,顧名思義存儲在文件頭部,存儲內(nèi)容就是標識文件編碼的信息。)而我們生成csv的平臺不一定遵循微軟的bom協(xié)議,導致如果輸出非unicode編碼的csv文件(例如utf-8),并且沒有生成bom信息的話,Excel自動按照unicode編碼讀取,就會出現(xiàn)亂碼問題了。作者:李蛟 鏈接:https://www.zhihu.com/questio...
來源:知乎 著作權歸作者所有。商業(yè)轉載請聯(lián)系作者獲得授權,非商業(yè)轉載請注明出處。
根據(jù)知乎查到的答案,原來是這里未遵循微軟的bom協(xié)議。原因找到了,解決方案就能出了。
解決方法:
fopen 方法下寫入bom頭,這里簡單寫一下步驟
function createCsv($filename, $header, $data) {
$handle = fopen($filename, 'w+');
// 添加BOM,標識為UTF-8格式
fwrite($handle, chr(0xEF).chr(0xBB).chr(0xBF));
// 寫入頭部
fputcsv($handle, $header);
// 逐行寫入內(nèi)容
foreach ($data as $datum) {
fputcsv($handle, $datum);
}
// 關閉指針資源
fclose($handle);
}
另外再補充一下 Bom 簡介
- 在UCS 編碼中有一個叫做”ZERO WIDTH NO-BREAKSPACE”的字符,它的編碼是FEFF。
- FFFE在UCS中是不存在的字符,所以不應該出現(xiàn)在實際傳輸中。
- UCS規(guī)范建議我們在傳輸字節(jié)流前,先傳輸字符”ZERO WIDTH NO-BREAK SPACE”。
- 這樣如果接收者收到FEFF,就表明這個字節(jié)流是Big-Endian的;
- 如果收到FFFE,就表明這個字節(jié)流是Little-Endian的。
- 因此字符”ZERO WIDTH NO-BREAK SPACE”又被稱作BOM。
- UTF-8不需要BOM來表明字節(jié)順序,但可以用BOM來表明編碼方式。
- 字符”ZERO WIDTH NO-BREAK SPACE”的UTF-8編碼是EF BB BF。
- 所以如果接收者收到以EF BB BF開頭的字節(jié)流,就知道這是UTF-8編碼了。
- Windows就是使用BOM來標記文本文件的編碼方式的。
該內(nèi)容來自 http://blog.csdn.net/chaozhi_... 這篇博客
https://prettier.io/playgroun...
可以搜索 prettier 這個插件,上面試提供的在線測試網(wǎng)址
如下圖,自己選擇吧:
靜態(tài)編譯刪除不了,動態(tài)的去 ext 目錄覆蓋就行
這應該是一個變量污染的bug
我猜測timezone
是私有屬性
所以有個get方法public DateTimeZone getTimezone ( void )
而var_dump
或print_r
之后timezone
變public
屬性了
可以參考 阿里云提供的文檔 https://help.aliyun.com/knowl...
第一行的第一個引號看著跟其它引號不一樣,你是用fputcsv寫文件么,上代碼吧
你可以用alarmmanager+pendingintend來實現(xiàn)該功能,當定時結束時發(fā)送一個廣播?;蛘吣憧梢栽谀愕暮笈_播放服務中自己開啟一個線程,來代替alarmmanager
.env 配置文件里面不是 DB_DATABASE=test
嗎?
@Perla
如這圖
搜鯊魚 顯示訂單號在加下面的商品
沒有報錯o
我的安裝流程:
下載:https://github.com/swoole/swo...
生產(chǎn)configure腳本(建立拓展骨架):phpize
配置:configure –witch-php-config=xxx
安裝:make && make install
配置php.ini:extension=swoole.so
是否漏了某個步驟?
file_get_contents()
是專門用來獲取文件數(shù)據(jù)流的,要么拿到,要么報錯,你的目的如果只是想要請求,試試curl
,可以設置請求時長
但是這種情況如果多了會不會造成大量廢棄的接口同時在生產(chǎn)環(huán)境
首先這里其實是3件事,一件叫兼容以前的版本,一件叫新增一個功能,一件叫廢棄之前的版本。
這是比較沒有辦法的事情。主要寫好文檔,每個系統(tǒng)版本的文檔里寫清楚接口的支持和廢棄。
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學院和江蘇省首批服務外包人才培訓基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術與教育服務機構,發(fā)展為教育服務業(yè)的綜合性企業(yè)集團,成為集合面授教學培訓、網(wǎng)
達內(nèi)教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構,是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務負責iOS教學及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術, 熟練的跨平臺面向對象開發(fā)經(jīng)驗,技術功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術顧問,美國Dachieve 系統(tǒng)架構師,美國AngelEngineers Inc. 系統(tǒng)架構師。