PHP

出自ProgWiki
跳至導覽 跳至搜尋
PHP
PHP-logo.png
编程范型: 物件導向函數式
釋出時間: {{{year}}}
設計者: Rasmus Lerdorf
實作者: The PHP Development Team, Zend Technologies
最近釋出日期: 8.1.1 / 2021年12月17日,6個月前2021-12-17
型態系統: 動態、弱型別
主要實作產品: {{{implementations}}}
衍生副語言: {{{dialects}}}
啟發語言: PerlC
影響語言: {{{influenced}}}
作業系統: 跨平台
授權方式: PHP License
網站: PHP 官方網站

PHPPHP: Hypertext Preprocessor)

技術文件

開發工具

IDE
其他開發工具
PHP快取

參照:『維基百科~List_of_PHP_accelerators

編譯器
PHP程式碼加密工具
其它
  • PhpDocumentor……PHP文件產生器,自動自PHP檔中抽出相關的注解產生相關的文件

相關設定

關於PHP.INI

  • 除錯訊息
error_reporting  =  E_ALL
display_errors = On
  • 魔術引號
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
  • register_globals
register_globals = Off
  • 預設時區(台灣為GMT+8)
date.timezone = Asia/Taipei
  • 允許上傳大檔案
memory_limit = 99M
max_execution_time = 300
upload_max_filesize = 20M
post_max_size = 24M

關於.htaccess

主條目:.htaccess

關於PHP的Debug

教學文件

PHP與WebService

PHP與Flash

UTF8

相關套件

Class或函數

Framework

參照:『維基百科~Category:PHP_frameworks

Blog

主條目:Blog#PHP

Wiki

主條目:Wiki#PHP

討論區

主條目:Forum#PHP

內容管理系統

主條目:CMS#PHP

MySQL資料庫管理

電子商務(網路商店)

主條目:Shopping_Cart#PHP

Bug追蹤系統

專案管理

圖庫系統

主條目:Gallery#PHP

FAQ

客服系統

Billing

Mailing Lists

網站流量與統計表

聊天室

主條目:ChatRoom#PHP


File explorer

傳訊

JavaScript壓縮工具

圖表

報表

討論區

FAQ

PHP輸出網頁亂碼

驗證email是否有效

格式化日期

以2010年3月4日為例
Y年m月d日 → 2010年03月04日
Y年n月j日 → 2010年3月4日

PHP安全模式

  • Safe Mode(有些PHP下的函數可能導致罷工)

PHP 5.3.0+ 未設定系統預設時區

可能導致網頁上出現下列警告訊息
  • Warning: strtotime() [function.strtotime]: It is not safe to rely on the system's timezone settings.
  • Warning: date() [function.date]: It is not safe to rely on the system's timezone settings.
date_default_timezone_set('Asia/Taipei');

PHP檔案減肥

  • 去除PHP程式碼之間的註解跟縮排
php -w test.php > test.striped.php 

如何建立更安全的登入網頁

停用不安全的函數

  • 在php.ini
disable_functions = show_source, system, shell_exec, passthru, exec, popen, proc_open	

php.net官方網站是OpenSource

升級到PHP 7.0的注意事項

關於檔案下載

PHP如何Debug

剝離HTML與PHP標籤

自動載入

function autoload($className)
{
    $className = ltrim($className, '\\');
    $fileName  = '';
    $namespace = '';
    if ($lastNsPos = strrpos($className, '\\')) {
        $namespace = substr($className, 0, $lastNsPos);
        $className = substr($className, $lastNsPos + 1);
        $fileName  = str_replace('\\', DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR;
    }
    $fileName .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';
 
    require $fileName;
}
spl_autoload_register('autoload');

常見的PHP錯誤訊息

A non-numeric value encountered

  • 錯誤
$a = '123a';
$b = 'b456';
echo $a+$b; //A non-numeric value encountered
  • 解法(轉成數值)
echo intval($a)+intval($b);

Deprecated: Array and string offset access syntax with curly braces is deprecated

  • 錯誤
$str = "test";
echo($str{0});
  • 解法(把{}改為[])
echo($str[0]);

Deprecated: Non-static method

  • 錯誤
class MyClass {
   function Test1() {
   }
}
function Test2() {
   MyClass::Test1();  //Deprecated: Non-static method
 }
  • 解法(改函數的宣告)
class MyClass {
   public static function Test1() {
   }
}

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP

  • 錯誤 (class的建構函數名稱必須為 __construct )
class MyClass { //Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP
   function MyClass() {
   }
}
  • 解法(把建構函數的名字改為 __construct )
   function __construct() {

Deprecated: Function create_function() is deprecated

  • 錯誤(create_function()已停用)
$callback_2 = create_function('$matches', 'return "[" . str_replace("|", "", $matches[1]) . "]";');
$callback_2 = function($matches) {return "[" .str_replace("|", "", $matches[1]). "]";};

implode(): Passing glue string after array is deprecated

  • 錯誤
$words = static::words($nbWords);
$words[0] = ucwords($words[0]);
$ret = implode($words, ' ') . '.';  //implode(): Passing glue string after array is deprecated
  • 解法(傳入參數的順序顛倒)
$ret = implode(' ', $words) . '.';

syntax error, unexpected 'new' (T_NEW)

  • 錯誤
class MyClass {
}
function Test1() {
   $SomeClass1 = "MyClass";
   $obj =& new $SomeClass1;  //unexpected 'new' (T_NEW)
 }
  • 解法
   $obj = new $SomeClass1();

Fatal error: Call to undefined function mcrypt_encrypt()

改用openssl_encrypt

Warning: file-get-contents() failed to open stream: HTTP request failed!