pCloud Partner Program

MongoDB使用PHP查找特定欄位是否存在

程式技術/Database 2017/07/24 14:59
views: 74469 times
由於 MongoDB 是一種 schema-free 的資料庫, 使用 Document 為基礎的存放方式, 所以若是想要查找特定欄位是否存在的語法就很重要了, 先來看看官方的資料:

https://docs.mongodb.com/manual/reference/operator/query/exists/

語法是使用 $exists 的方式來判定特定欄位是否存在, 若要轉為 php 語法的話, 可以使用如下:


來列出在 collection 中 field1 不存在的資料, 這對於使用特定欄位做為處理資料或作業資料來說, 可以方便地判斷, 也不用預先開好欄位, 很方便實用的一個用法.


top

CentOS中apache與php寫入權限與SELinux設定

程式技術/PHP 2016/06/23 11:14
views: 74105 times
由於 CentOS 有 SELinux 的權限設限, 所以相對一些安全層級也都比較高, 最近有個需要用 php 寫入檔案(或是上傳檔案的應用), 原本的 php 在預設狀況下, 就會對 /tmp 有寫入的權限(預設是會在 /tmp/systemd-private-xxxxxx 下的私有 /tmp), 所以上傳時沒有問題, 但使用 move_uploaded_file() 至目的目錄時, 會有寫入的權限問題.

方式如下:

Method A
1. 要寫入需要有對應的權限, 建議方式是將要寫入的目錄給予 apache 執行用戶的擁有者, 如 CentOS 配 apache 時, user 為 apache

chown -R apache /var/www/mysite1/upload


2. 此時只需要給予對應目錄 755 的權限即可(通常預設也是這個).

chmod -R 755 /var/www/mysite1/upload



Method B (不建議)
1. 直接給予該目錄 global write 的權限, 777 即可, 不過會有安全性的考量

chmod -R 777 /var/www/mysite1/upload



完成之後, 若仍無法寫入, 則是因為 SELinux 的設限, 所以即使完成了上面的設定也無法寫入, 此時要再進一步設定 SELinux, 方式如下:

sudo chcon -t httpd_sys_rw_content_t /var/www/mysite1/upload -R


原因為預設的 webservice 能擁有的權限角色為 httpd_sys_content_t , 是無法寫入檔案的, 所以需要再進一步設定 SELinux 才行.

參考資料:
https://blog.lysender.com/2015/07/centos-7-selinux-php-apache-cannot-writeaccess-file-no-matter-what/

另外寫得很仔細的 SELinux 資料可以參考:
https://www.digitalocean.com/community/tutorials/an-introduction-to-selinux-on-centos-7-part-1-basic-concepts
https://www.digitalocean.com/community/tutorials/an-introduction-to-selinux-on-centos-7-part-2-files-and-processes
https://www.digitalocean.com/community/tutorials/an-introduction-to-selinux-on-centos-7-part-3-users
top

PHP好用線上測試功能

程式技術/PHP 2016/02/03 11:03
views: 42511 times
這個線上的沙箱測試, 可以讓你在不同的 PHP 版本間進行 PHP程式的測試, 有時候需要一小段程式來測試與驗證時, 可以利用這樣的工具來達成, 網址:

http://sandbox.onlinephpfunctions.com/

不僅可以測試 php 程式碼, 還可以進行儲存與分享, 是在 php 程式開發時, 可以快速撰寫小程式的好用工具, 很方便快速, 請多多利用.

例如以 php 網站上的一個 callback function範例:


放在該網站執行並存檔分享連結為:
http://sandbox.onlinephpfunctions.com/code/c9a175417fddfc1ed0aef4a48feb5de384c49e3d

真的又快又方便!
top

使用PHP上傳圖片至Azure Storage供圖檔應用

程式技術/PHP 2015/05/05 23:04
views: 101948 times
使用 PHP 將圖檔上傳至 Microsoft Azure 雲端空間供圖檔應用, 有以下幾個步驟:

1. 建立 Azure 的 Storage Account , 並取得 key 與建立 container (也可以使用程式建立)
2. 安裝 Azure PHP Client: http://azure.microsoft.com/en-us/documentation/articles/storage-php-how-to-use-blobs/

2-1. 先安裝 Git
2-2. 依說明建立 composer.json 與下載 composer.phar (http://getcomposer.org/composer.phar), 並進行安裝: php composer.phar install
2-3. 完成程式下載

3. 在 php 程式碼中引入對應程式碼, 以上傳圖檔為例, 程式碼如下:


其中範例中的程式, 並沒有指定對應 blob 中的 Content-Type, 會使用預設的 application/octet-stream , 其實在網頁使用並無影響, 但若是直接連結會變成是下載的狀況, 比較不適合, 而且也應該是指定為正確的 Content-Type 較佳.

若有需要使用到 php 上傳圖檔至 Azure storage, 可以參考上面做法進行上傳應用.

相關資料:
Put Blob: https://msdn.microsoft.com/library/azure/dd179451.aspx

使用 ASP.NET 版本參考這篇:
http://blogs.msdn.com/b/ericsk/archive/2013/12/18/php-on-windows-azure-windows-azure-blob-storage.aspx

top

好用工具Encode Explorer

程式技術/PHP 2013/09/12 10:25
views: 313265 times
今天在協助朋友解決一個在 linux apache 下的 php 程式對中文檔名檔案存取的問題, 在思考在 linux 下的 file system 對中文檔名存放的編碼時, 想說直接找個工具來用比較快. 因為其實不需要真的去檢查看 file system 上中文檔名存放的編碼, 只需要找個 php 的 file explorer 來進行就可以了, 找出對應的編碼即可. 實際上, 之後的程式也是透過 php 存取, 所以用 php 的 file explorer 檢查是最方便不過了.

找到這個好用的工具, 短小精幹, 一支主程式, 就是這麼方便: Encode Explorer - http://encode-explorer.siineiolekala.net/

可以先試看看該網站的 demo: http://encode-explorer.siineiolekala.net/explorer/index.php

一支程式就可以做 file exploer 功能, 所以利用這樣的方式來檢查看中文檔名是否正常, 該程式預設是使用 utf-8 的, 不過朋友的虛擬主機上是 big5 的中文編碼, 所以在 Encode Exploer 下看到亂碼的中文檔名, 利用瀏覽器的編碼改為 big5 就看得到該中文檔名了, 這下就明白朋友的虛擬主機上的中文檔名是走 big5, 對後續在應用 timthumb.php 縮圖無法正確取得本地中文檔名的問題就解決了.

若網友們有碰到這樣的問題, 也可以試著用這套工具來檢查看看. 當然, 若是需要找個方便好用的 php file exploer, 這套工具也是十分方便好用呢!
top

免費試用Windows Azure的雲端服務

系統技術 2012/11/09 16:39
views: 115859 times
微軟的雲端服務 Windows Azure 目前有免費試用的版本, 方便給在學習及測試階段的開發者們一個好用方便的服務.

入口: http://www.windowsazure.com/

進來之後, 可以直接在線上申請試用 3個月免費, 點下[免費試用], 免費的內容如下:

    計算 / 每個月 750 小時的小型計算時數
    網站 / 10 個網站
    行動服務 / 10 個行動服務
    關聯式資料庫 / 1 個 SQL 資料庫
    SQL Reporting / 每個月 100 小時
    儲存體 / 35 GB 及 50,000,000 個儲存體交易
    頻寬 / 無限制輸入及 25 GB 輸出
    CDN / 20 GB 輸出及 500,000 個交易
    快取 / 128 MB
    Service Bus / 1,500 個轉送時數及 500,000 則訊息

登入 windows account 之後, 會需要輸入電話號碼(用來收開通簡訊)及信用卡驗證身份(避免濫用)後, 就可以順利開通了.

接下來就是使用這個 3個用的免費服務, 最快的方式是直接建立網站功能(即website), 免費內容可以建立10個網站, 所以就來新增一個網站看看, 從 Web Sites 內容下方, 按下 [+NEW] 後就可以新增一個網站, 接下來會有三個選項:

1. QUICK CREATE
2. CREATE WITH DATABASE
3. FROM GALLERY

為能快速就有個網站可以試玩看看, 我們來選 3. FROM GALLERY, 就可以利用架站的套件直接裝好來用, 如 Drupal, Wordpress, Joomla, Mediawiki 等.

來裝個 Drupal 試看看, 選擇後, 需要輸入資訊畫面如下:
用戶插入圖片

第一個 url 就需要輸入一個唯一網址, 然後建立一個新的MySQL資料庫, 選擇地區後, 按下一步, 輸入完成資料庫相關資訊後, 回到 Web Sites的管理介面, Windows Azure 會開始部署, 等一下下後, 就會出現部署完成的資訊, 並該 web site 的狀態為 running , 點下自訂的 url 後, 會進入設定安裝 drupal 的畫面如下:
用戶插入圖片

接下來就很單純啦, 一步一步就可以完成這個 drupal 的安裝. 真的很快很方便, 而且馬上就可以用了呢!

目前裝好了兩個測試的 web site, 一個是 wordpress: http://mypress.azurewebsites.net/ , 另一個就是 drupal: http://dp7.azurewebsites.net/ 還真的蠻方便的.

接下來也可以自行試看看用之前的 QUICK CREATE 來建立一個空的網站, 建好之後, 進到管理介面中的 configuration 可以看到預設的 .net framework version 是 4.5, php 是 5.3 的版本.

另外若需要用 ftp 管理, 要到 Dash board 中, 點右邊的 setup git publishing, 也就是 git publishing 和 ftp 都用一樣的帳號密碼, 詳情可以參考這篇:

http://blog.syntaxc4.net/post/2012/09/13/enabling-php-5-4-in-windows-azure-web-sites.aspx

這樣就可以利用 ftp 來進行檔案的上傳及管理了. 由於站台是可以執行 asp.net 及 php, 筆者也上傳了 asp 的檔案測試, 也是可以執行的, 有興趣的朋友們可以試看看這個 Windows Azure 提供的免費 3個月試用服務.

若是用量(QUOTA)超過, 預設是不會扣款, 只是服務會暫停, 測試的網站應該不太會這麼快就用完吧, 好好試用看看吧!

若是網站要自訂網域, 則必須在 SCALE 那裡將模式由 free 設為 shared 或 reserved 才行, 可以參考這篇: http://www.windowsazure.com/en-us/develop/net/common-tasks/custom-dns-web-site/

3種程式支援 sample:
php: http://w3.azurewebsites.net/1.php
asp: http://w3.azurewebsites.net/1.asp
aspx: http://w3.azurewebsites.net/1.aspx

快試看看吧!
top

php include file的檢查

程式技術/PHP 2010/03/23 19:56
views: 85218 times
在 php 程式中, 使用 include 的方式來將檔案含入是很常見的語法.

但是若某 php 程式, 同時會發生被 include 或獨立執行時, 如何判斷呢? 或是說某 1.php 程式, 本身可以執行, 也會被 2.php include, 但發生這兩種不同的狀況時, 會需要 1.php 有不同的執行結果, 要如何偵測這個狀況呢?

目前查到的手法, 是利用 __FILE__ 和 $_SERVER["SCRIPT_FILNENAME"] 兩個變數來檢查. 也就是說, 在 1.php 的程式中, 使用如下的程式片斷:



這是利用了 __FILE__ 這個 php 常數, 在 php 程式中, 會被設定為自己的檔名的緣故, 所以可以這樣來利用判斷. 或許還有其他手法, 或更直接的方式來判斷, 也歡迎大家提供!!

參考資料: http://www.programmer-club.com.tw/ShowSameTitleN/php/6727.html
關於 __FILE__ 的這個 magic constant 可以參考: http://www.php.net/manual/en/language.constants.predefined.php
top
TAG include, php

用GIF動畫做Captcha

程式技術/PHP 2010/01/25 13:32
views: 75894 times
一般 Captcha (用來分辨是否是人的一種方式, 可以參考: http://zh.wikipedia.org/zh-tw/CAPTCHA ) 都是靜態或是聲音的方式來讓人辨識, 不過今天要介紹這個是用動畫做的.

用動畫的話, 比較方便的格式是 gif 檔的動畫格式, 利用動畫的方式, 把"數學問題"顯示出來(當然是簡單的), 例如 4 + 8 = ? 這樣, 一格一格地秀出來, 如下:

用戶插入圖片

(圖片引用自: http://www.querythe.net/Animated-Gif-Captcha/ )

這樣一來, 就可以避開破解的可能, 而且是用問題的方式來回答, 對於非人類的"機器人"或程式, 就有一定的防禦功能, 效果應該很不錯.

這個網站 http://www.querythe.net/Animated-Gif-Captcha/ 提供了免費的 php script 供 gif 動畫的 Captcha 來讓大家使用, 很不錯的免費 captcha 動畫gif版本. 大家可以試看看.

其他也有靜態的版本, 這裡有 freecap: http://www.puremango.co.uk/2005/04/php_captcha_script_113/ , 雖然還有許多其他的, 不過這個 gif 的版本是很特別的一個 captcha , 又有創意, 也有不錯的功能.



top
TAG captcha, gif, php

好用php線上教學資料

程式技術/PHP 2008/09/25 16:29
views: 81876 times
今天朋友問到一個架站的問題, 發現他的網站留言不會寫入, 他大概檢查完後, 把錯誤訊息給我看了一下, 發現可能原因是寫入檔案的問題造成的錯誤. 於是朋友就說要是會寫程式就好了, 我便幫忙找一下看有沒有教學的資料.

php我最常用的就是官網了 (www.php.net), 便把這個資料給朋友看, 他說英文閱讀吃力, 我記得官網上有多國語的功能, 於是一邊找, 也發現了好資料, 就是 php 的入門資料, 而且還是中文版本的哦, 記錄下來給大家學習參考用囉: http://docs.php.net/manual/tw/getting-started.php

由於 php + mysql 真的有很多好用的架站軟體, 免費套件, 基於這些理由, 若有心想學好程式的人, 真的可以好好學學呢, 這篇資料給大家參考!
top
TAG manual, php

eAccelerator安裝好囉

程式技術/PHP 2007/05/10 16:12
views: 149892 times
久聞 eAccelerator 大名, 今天同事在一台 BSD 的環境下安裝好 php 的 eAccelerator 的組件, 據說可以大幅提昇 php 效能, 可想見, 將 php build 好的 binary code cache 在目錄下, 應該對於 php 的效能有顯著提昇沒錯, 於是就開始著手安裝 eAccelerator 囉...

我是參考了這篇文章, http://www.tiec.tp.edu.tw/lifetype/post/102/5552, 感謝原作者用心說明, 接下來進行安裝, 由於我的環境是 appserv, 所以要先到 http://www.arnot.info/eaccelerator/ 找對應版本的 eAccelerator dll 版本, 下載後, copy 至 php 的 extension 目錄下, 並進行 php.ini 的調整(特別注意是eaccelerator.cache_dir 參數, 記得要先開好目錄, 這樣 eAccelerator 才能將 build 好的 binary code 存放在該位置), 完成後就直接重起 apache 即可, 接下來利用 phpinfo 來 check 一下(或利用指令 php -v 來觀察), 畫面中出現如下的 eAccelerator 字眼就代表安裝成功囉:

用戶插入圖片

接下來就 check 看網頁工作是否正常, 原則上第一次會進行 build binary 的動作並存在指定的目錄下, 會稍微慢一點點, 但第二次之後, 就會跑得飛快, 相信你會滿意地.

more..

top




Nextbit Robin 5.2吋六核心智慧型手機 Microsoft Office 365 中文家用版PKC (無光碟)
ASUS華碩 AC1900 雙頻無線路由器 RT-AC68U 美國 VORNADO 533 渦流空氣循環機 (黑色)
御茶園 每朝健康綠茶(650mlx24入) 每朝健康 雙纖綠茶(650mlx24入)


 Waiting...