發表文章

目前顯示的是 2007的文章

解決 mongodb 無法啟動的問題

某天起床後 mongo 忽然活不回來了
查了一下錯誤訊息的 log:

Docs: https://docs.mongodb.org/manual
  Process: 120107 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=1/FAILURE)
  Process: 120104 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 120101 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 120099 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS)

 1月 15 04:01:26 foso-test systemd[1]: Starting MongoDB Database Server...
 1月 15 04:01:29 foso-test mongod[120107]: about to fork child process, waiting until server is ready for connections.
 1月 15 04:01:29 foso-test mongod[120107]: forked process: 120112
 1月 15 04:01:29 foso-test systemd[1]: mongod.service: control process exited, code=exited status=1
 1月 15 04:01:29 foso-test systemd[1]: Failed to start MongoDB Database Server.



看起來應該是權限的問題: 發現很多人都遇到相同的狀況,主要有兩個資料夾勢必要擁有 mongod 這個權限擁有才可以。 所以大部分的解決說明都是這樣作:
chown -R mongod:mongod …

檔案上傳模組 超簡易版 三行搞定

網路上面寫了很多檔案上傳的模組,這幾天也找了很多書,大部分的書上面都是用陣列的方式運用讓一次可以上傳很多檔案。不過我很認真的寫了一個非常單純的上傳模組。可以讓大家更了解上傳的運作方式。

1.首先,還是要先製作一個上傳的表單
表單要加上 enctype="multipart/form-data" 這個屬性
這個輸入框的type要把它設成file至於ID就設成userfile吧







2.接下來就是接收的頁面,通常我會把接收的頁面同時也當作是程式運算的頁面,上傳檔案的動作再標頭的位置就可以處理掉。

//這一行要先寫上傳的檔案要先暫存在的資料夾
$uploaddir = 'C:/AppServ/www/test/img/';
//宣告暫存檔名
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
//更改上傳的檔名為 PID_B.jpg
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_POST["PID"] . '_B'.'.jpg');


解釋一下好了:
原理:
PHP中檔案丟到伺服器中只會被暫存,當網頁關閉就會被刪除。因此我們要趕在檔案被刪除之前把檔案搬走,搬到我們要的地方,這樣我們就可以留下我們要的檔案。
這就是上傳檔案的原理。但是要注意一件事就是要先確定暫存的目錄和移動的目錄都要是存在的,PHP並沒有向WINDOWS一樣還會自動生成一個資料夾,只會自動出現錯誤資訊。

語法:
$uploaddir = '這個地方是暫存的實體位址喔';
//接下來要利用$_FILES語法來取得userfile傳回來的檔名寫到$uploadfile變數中
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
//利用move_uploaded_file搬移檔案到我們要的地方(這是語法喔不是變數)
move_uploaded_file(原來的檔案,目的地檔案);
這樣就大功告成啦!!



資料庫連接語法

學寫PHP的人不外乎就是想要接資料庫,至少我的動機是這樣。這一章就是要寫資料庫連接的模組
通常大家會用一個檔案先寫好,然後每一個頁面再去做呼叫的動作。這樣不論是對安全性或是方便性來說都是一個不錯的選擇。當然,如果你堅持不要的話也是可以直接在每一頁的標頭上寫這些,只是當資料庫的登入資訊改了那就有得你忙的搂!

1.先建立一個用來寫登入資訊的檔案,我的習慣是用link.php做檔名
貼上以下的語法:

mysql_query("SET NAMES 'utf8'");
mysql_select_db("product");

2.接下來只要在每一個要與資料庫連接的網頁中加上下面的語法
require_once('Connections/link.php');
那麼資料庫就會進行連接搂!

關於中文亂碼的部分

這個方法據說是最有效的
我自己測試的結果也是

只要在連接MySQL的宣告檔中加上這些

mysql_query("SET NAMES 'utf8'");
mysql_select_db("product");

就可以強制把存入的中文用utf-8下去編碼
當然,前提是要顯示的網頁也是在utf-8的環境下才行