git .gitignore file ignore .htaccess

就我目前所知,.gitignore 檔案無法忽略 .htaccess 檔,這有點困擾,因為正式環境的.htaccess配置與本地端開發環境的配置通常會有些差異,如果不能忽略這檔案,每次更新我都要改一次
.htaccess 配置,實在很困擾,目前能達到的方法要透過下指令方式取消追蹤( 我也很不會用指令的方式 ),我習慣用 SourceTree 來操作,所以這邊也教一下 SourceTree 的操作步驟。

開啟 SourceTree 命令模式

開啟指定專案,面板的右上角有個命令模式

取消追蹤 .htaccess 檔案命令

重新追蹤 .htaccess 檔案

Reference:

https://stackoverflow.com/a/22784639/6784662

[……]

閱讀更多

Fix Google reCaptcha invalid-json error

使用 Google reCaptcha 驗證碼進行後端驗證,拋出 invalid-json 錯誤,分享解決這問題的方法:

解決方法:

開啟檢查 PHP.ini 設定,搜尋「allow_url_fopen」,若值不是 On 請改成 On 開啟它,如下:

allow_url_fopen = On

接著搜尋「extension=php_openssl.dll」,確認是否開啟,前方有分號「;」代表沒開啟

;extension=php_openssl.dll

將前方的分號「;」移除,如下:

extension=php_openssl.dll

重新啟動 SERVER

 [……]

閱讀更多

Warning: file_get_contents(): Unable to find the wrapper “https” …

解決錯誤訊息:

Warning: file_get_contents(): Unable to find the wrapper “https” – did you forget to enable it when you configured PHP?

解決方法:

需要開啟 php php_openssl 的這個 extension
開啟 php.ini,搜尋:「extension=php_openssl.dll」

;extension=php_openssl.dll

將前方的分號「;」移除

extension=php_openssl.dll

重新啟動 SERVER[……]

閱讀更多

PHP php.ini 在哪裡?

開發PHP時,難免要修改PHP.ini,問題來了,PHP.ini在哪裡,我們可以透過一個簡單的方式找到 PHP.ini 的檔案路徑

建立一個PHP檔案,裡面就寫一行 phpinfo(),運行這個檔案,它會列出所有PHP相關資訊

<?php
phpinfo();

PHP.ini 就在下方紅框處,這是Windows上的PHP,Linux上的PHP一樣可以這麼用[……]

閱讀更多

Fix Curl Error: SSL certificate problem: unable to get local issuer certificate

最近正在安裝 WHMCS localhost 開發環境,程式安裝成功,但許可證一直無法通過,在原廠協助下,來來回回終於找到錯誤原因,就是 Curl 有錯誤,錯誤訊息:

Curl Error: SSL certificate problem: unable to get local issuer certificate

Fix Curl Error: SSL certificate problem: unable to get local issuer certificate

Curl在 WHMCS 中是很重要的,很多API的介接都需要靠它,我已經成功修復錯誤,以下分享修正方法。

修正 unable to get local issuer certificate 錯誤

Step 1. 下載CA憑證

到這個網址下載憑證: Download the certificate bundle.

Download the certificate bundle.

點紅框處下載,檔名為 cacert.pem

Step 2. 複製檔案到PHP安裝目錄中

雖然可以放在任意位置,單純是因為好找,所以我把它放在PHP安裝目錄中:

C:\php-7\extras\ssl\cacert.pem

Step 3. 確認PHP.ini啟用 mod_ssl 模組

找到 PHP.ini  檔打開它並查找 php_openssl.dll

如果它前面有分號,代表沒有開啟,請將分號移除

;extension=php_openssl.dll

如果 PHP.ini  中沒有查找到 php_openssl.dll  請於空白處,自行加入下方這一行

extension=php_openssl.dll

Step 4. 設定cacert.pem

繼續在 PHP.ini  中查找 curl.cainfo  及 openssl.cafile  這兩行

填入 Step 2 的 cacert.pem  檔案之絕對路徑,和上一個步驟一樣,前方有分號請移除分號,如果找不到這兩行請自行添加

特別注意:目錄斜線跟 Windows 檔案總管的斜線相反,要用左斜線

curl.cainfo="C:/php-7/extras/ssl/cacert.pem"
openssl.cafile="C:/php-7/extras/ssl/cacert.pem"

Step 5. 重新啟動服務器

重啟後,重新測試

Fix Curl Error: SSL certificate problem: unable to get local issuer certificate

參考:[……]

閱讀更多

解決 Fatal error: Call to undefined function exif_read_data()

上傳圖片遇到下面問題:

Fatal error: Call to undefined function exif_read_data()

支援版本

官方文件 PHP4 以上就支援此 exif_read_data()

如果已符合版本需求還是會出現此錯誤,可以試試看下面的解決方法。

解決方法:

  1. 找到你的 PHP.ini 文件
  2. 找到下面這一行
    ;extension=php_exif.dll
  3. 把前方的分號移除,如果找不到這行,可以直接複製下列文字,貼於 PHP.ini 裡
    extension=php_exif.dll
  4. 重新啟動Apache

[……]

閱讀更多

Plesk Onyx on CentOS 7 AWS AMI 一鍵安裝

有什麼比一鍵安裝更快樂呢

千呼萬喚始出來,AWS有Plesk官方的AMI囉!千呼萬喚始出來,AWS有Plesk官方的AMI囉!

相信很多接觸過虛擬主機的人都應該用過Plesk,Plesk是一套主流的主機管理系統,雖然cpanal也是主流的主機管理系統,但我還是習慣使用Plesk,可能是介面比較漂亮吧,以貌取程式,之前要在AWS上安裝還要從OS一個一個裝,慢慢去調校,期待有沒有AMI的解決方案,Plesk官方發布了一篇新文章,裡面有提到已經可以透過AWS AMI一鍵安裝AWS環境及Plesk

作業系統版本

提供3種不同作業系統的映像檔

OS
AWS AMI

CentOS

Plesk Onyx on CentOS 7 (Webhost)

Ubuntu

Plesk Onyx on Ubuntu 16.04 (WebHost)

Windows

Plesk Onyx on Windows 2012 R2 (WebHost)

Plesk十天試用

AWS AMI Plesk十天試用

預先配置

講簡單一點就是都幫你配好好的拉,你只要點一下就好

預先安裝的 Plesk Extensions

  • Plesk Premium郵件由Kolab提供 – 安全的業務類電子郵件和協作工具,最多10個郵箱
  • Plesk電子郵件安全包(卡巴斯基AV / Magicspam) – 保護您的電子郵件
  • Plesk防火牆保護
  • ModSecurity  – 保護您的服務器免受惡意攻擊
  • Symantec免費SSL證書(基本) – 來自全球安全領導者的網站安全*
  • WordPress工具包 – 只需點擊幾下即可在單個服務器上大量管理多個WordPress實例
  • Plesk安全顧問 – 如果你不是安全專家,這個嚮導是!
  • Amazon Route 53 DNS
  • Boldgrid  – 快速,輕鬆的網站建設者在WordPress之上工作*

預配置為性能和安全性

  • 服務提供商視圖
  • 開啟防火牆
  • 使用Atomicorp的基本規則開啟Web應用程序防火牆
  • 開啟Fail2Ban禁用IP地址過濾
  • PHP 7-FPM(FastCGI Process Manager)
  • 由NGINX服務

如果你是AWS新用戶,還送你 $500 美金 AWS credits

Plesk on AWS

[……]

閱讀更多

Plesk 設定排程任務,定時瀏覽指定網頁

Plesk是一套很方便的主機系統管理程式,也是主流主機管理程式之一,很多主機商也都用Plesk來進行主機系統管理,本篇要介紹如何設定排程任務

什麼是排程任務?

有時我們在寫程式的時候會希望主機自動在某一個時間區間執行某些任務,例如:每日午夜12:00,進行購物車訂單出貨拋轉作業,當然也可以人工每天12點去瀏覽這支程式,只是非常愚蠢,偷懶是工程師的美德,於是我們需要一個像計時器的東西,時間到去做某些動作,達成自動化目的。

建立任務處理程式

我習慣會寫一支程式,專門執行某些特定任務,比如說:購物車訂單出貨拋轉作業,這支程式可透過瀏覽網頁的方式去驗證是否正常運行,確定一切都正常,接著我們需要一個觸發程式的瀏覽者,這我們就透過Plesk的排程任務達成。

設定Plesk

登入Plesk ,到指定網域的管理頁面,右上角有一個叫計畫的任務
PS. 如果您的Plesk管理面板中沒出現這個選單,那就是這功能管理者沒開放,就需聯絡你的主機商,如果他們不願意開這功能就換家主機商吧。
登入Plesk ,到指定網域的管理頁面,右上角有一個叫計畫的任務

添加一個任務

設定執行時間

  1. 我選擇獲取URL選項,讓Plesk排程任務,在指定時間瀏覽我的某一支檔案。
  2. 輸入要執行的檔案URL
  3. 設定時間及週期
  4. 發送通知,可以選擇僅發送異常通知就好
  5. 選擇通知對象
  6. 儲存

驗證

  1. 設定完成後,一定要檢查是否有在指定時間及周期中執行,可以寫個小程式,去紀錄執行時間,以驗證程式有正常運行。
  2. 承上點,若你確定你的程式運行完全正常沒有問題,但排程卻沒正常運行,請檢查排程設定,若也都沒錯,請聯絡主機商。

安全設定

  1. 眼尖的朋友應該會看到我的執行URL加了個c參數,後面跟了一堆亂碼,這是一個簡單的安全設定,為了避免爬蟲或有心人士,在非排程定義執行區間去執行此程式,所做的驗證機制,在我的php檔最前方加入下方程式碼,若沒有正確的key,此頁將返回hTTP 404錯誤,當作根本就沒這頁的存在
    <?php
    if($_GET['c']!='B598FCD1B61E79D8249C5A8AAEC2D585'){
    header("HTTP/1.0 404 Not Found");
    exit;
    }
  2. 設定 .htaccess 檔,該URL只允許執行某一 IP執行
    RewriteEngine On
    RewriteCond %{REMOTE_ADDR} !=123.123.123.123
    RewriteCond %{REQUEST_URI} ^/basic/test.php [NC]
    RewriteRule ^ - [R=404,L]

    參考資料:

[……]

閱讀更多

MIS WAMP手動安裝及設定教學 Apache2.4 + PHP7 for windows10

手動安裝 Apache2.4 + PHP7 for windows10

首先,我該選x64或x86安裝呢?

何謂 x64 和 x86,可閱讀下方網址文章,本篇不多做解釋
x86和x64到底有什麼差異?

注意 !!!

若安裝x64版本,PHP & Apache 都需要選擇x64版本,反之亦然

安裝 PHP7 for windows

PHP For Windows 官網

http://windows.php.net/

PHP For Windows 歷史版本 (官網)

本例下載 PHP 7.0 VC14 x64 Thread Safe

解壓縮至 PHP 的存放目錄
本例解壓縮至 C:php-7.0.10-Win32-VC14-x64

# 設定 php.ini

PHP.ini 為PHP的設定檔
PHP安裝目錄中尚無 PHP.ini
但於安裝目錄中有下列2個檔案
php.ini-development 為開發環境用參考設定檔
php.ini-production    為正式環境用參考設定檔
本例複製 php.ini-development 更名為 php.ini 置於於PHP安裝目錄中
文字編輯器開啟 php.ini

以下為常用設定,視需求調整參數,至於設定內容就不於本篇討論

# 設定環境參數

short_open_tag = On
extension_dir = "c:/php-7.0.10-Win32-VC14-x64/ext"

# 設定延伸套件,把前方的「;」移除即可

extension=php_bz2.dll
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mysqli.dll
extension=php_openssl.dll
儲存 php.ini

# 設定延伸套件

移動PHP目錄中的下列檔案至 C:Windowssystem32中
libssh2.dll, php_curl.dll, ssleay32.dll, libeay32.dll
移動PHP目錄中的下列檔案至apachebin中
libssh2.dll

安裝 Apache2.4 for windows

Apache for windows download
至 Apache Haus 下載 Apache 2.4.23

安裝 Apache2.4

本例下載 Apache 2.4.23 x64

httpd-2.4.23-x64-vc14.zip

解壓縮至 SERVER 的存放目錄

本例解壓縮至 C:AppServApache24

設定httpd.conf

httpd.conf 為 Apache的設定檔
先複製一份命名為 httpd.conf.bk 備份使用,以免改壞掉
文字編輯器開啟Apache安裝目錄中的  /conf/httpd.conf


# 設定環境參數

Define SRVROOT "C:/AppServ/Apache24"
Define DOCROOT "C:/AppServ/www" # 新增此行,網站根目錄
ServerRoot "${SRVROOT}"

注意!!!!!!!!!!
分隔路徑的斜線,要用「/」而不是 windows 檔案總管的「」

<Directory />
    AllowOverride All
    Require all denied
</Directory>

DocumentRoot "${DOCROOT}"
<Directory "${DOCROOT}">
   Options Indexes FollowSymLinks
   AllowOverride All
   Require all granted
</Directory>

於最下方加入下列文字,Apache連接PHP7

#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL 
AddHandler application/x-httpd-php .php 
AddType application/x-httpd-php .php .html 
LoadModule php7_module "C:/php-7.0.10-Win32-VC14-x64/php7apache2_4.dll" 
PHPIniDir "C:/php-7.0.10-Win32-VC14-x64/" 
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL

「C:/php-7.0.10-Win32-VC14-x64/」為PHP安裝目錄

注意!!!!!!!!!!

分隔路徑的斜線,要用「/」而不是 windows 檔案總管的「」

所以是
「C:/php-7.0.10-Win32-VC14-x64/」

不是
「C:php-7.0.10-Win32-VC14-x64

儲存 httpd.conf

 

Apache安裝為 windows 服務,開機自動啟動

開啟 Win10 的 「命令提示字元(系統管理員)」

// 測試設定檔是否正確

C:AppServApache24binhttpd.exe -t

錯誤會跳錯誤訊息,正確會顯示syntax OK,接著安裝服務

C:Windowssystem32>C:AppServApache24binhttpd.exe -t
Syntax OK

// 安裝服務,反之解除安裝為 httpd.exe -k uninstall

C:AppServApache24binhttpd.exe -k install

測試是否正確運行

在網站根目錄C:/AppServ/www下建立一個index.php檔案

<?php phpinfo(); ?>

運行 http://127.0.0.1
看到下列畫面,代表安裝成功

呼~打完收工!![……]

閱讀更多

[PHP] Fatal error: Uncaught Error: Call to undefined function ldap_connect apache2.4 php7 Windows

因為要用到 PHP  ldap_connect()
Fatal error: Uncaught Error: Call to undefined function ldap_connect()
設定方式網路上很多
主要是設定PHP.ini擴充套件,把前面的註解拿掉

extension=php_imap.dll

如果還不行
Copy PHP 目錄下的 libsasl.dll 到apache中的bin資料夾中

如果還不行
Copy PHP 目錄下的 libeay32.dll 及 ssleay32.dll 到 C:WindowsSystem32 中

基本上該設定的都設定了,但我還是不行,
這是一個怪問題,我用Nginx + PHP7
可以順利的call ldap_connect()
但用 apache2.4 就會跳 Fatal error
怪的是我用相同的PHP7,搞死人,
最後找到原因,以下解決我的問題
修改 PHP.ini

extension_dir = "ext"

改為

extension_dir = "C:/php-7.0.9-Win32-VC14-x64/ext"

也不知道為什麼,用Apache2.4預設的PHP.ini會有這樣的問題,用NginX反而不會
怪怪怪!!!

http://stackoverflow.com/questions/17204437/fatal-error-call-to-undefined-function-mb-detect-encoding

[……]

閱讀更多