Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
HP 是一種創(chuàng)建動(dòng)態(tài)交互性站點(diǎn)的強(qiáng)有力的服務(wù)器端腳本語言。
PHP 是免費(fèi)的,并且使用非常廣泛。同時(shí),對于像微軟 ASP 這樣的競爭者來說,PHP 無疑是另一種高效率的選項(xiàng)。
適用于PHP初學(xué)者的學(xué)習(xí)線路和建議
PHP 開發(fā)工具推薦
PHP 在線工具
通過實(shí)例學(xué)習(xí) PHP
我們的 PHP 在線實(shí)例讓您能夠更簡單的學(xué)習(xí) PHP,實(shí)例中包含了 PHP 的源碼及運(yùn)行結(jié)果。
實(shí)例
<!DOCTYPE html>
<html>
<body>
<?php
echo "Hello World!";
?>
</body>
</html>
運(yùn)行實(shí)例 ?
PHP 入門
PHP 參考手冊
PHP 函數(shù)的完整參考手冊:
Array 函數(shù)
Calendar 函數(shù)
cURL 函數(shù)
Date 函數(shù)
Directory 函數(shù)
Error 函數(shù)
Filesystem 函數(shù)
Filter 函數(shù)
FTP 函數(shù)
HTTP 函數(shù)
LibXML 函數(shù)
Mail 函數(shù)
Math 函數(shù)
Misc 函數(shù)
MySQLi 函數(shù)
SimpleXML 函數(shù)
String 函數(shù)
XML Parser 函數(shù)
Zip 函數(shù)
、下載nginx和php的程序包
1.NGINX官網(wǎng)下載
2.PHP官網(wǎng)下載
二、安裝和配置nginx和php
1. 將nginx解壓到指定目錄下:
a. 運(yùn)行nginx根目錄下的nginx.exe
b. 打開瀏覽器訪問本地IP,
c. 看看是否出現(xiàn)“Welcome to nginx!”,出現(xiàn)的證明已經(jīng)啟動(dòng)成功了。
d. 沒有啟動(dòng)的話,看看80端口有占用沒。
nginx命令:
重新加載配置文件:nginx -s reload;
退出:nginx -s stop;
2. 將php和nginx解壓到指定目錄下
a. php根目錄下的php.ini-recommended文件復(fù)制一份并改名為php.ini,用文本編輯器將它打開。(具體配置信息請參考文件php-示例.ini)
i. 將 ;extension_dir="ext"改成extension_dir="./ext"
注意去掉前面的”;“。
ii. 將;cgi.force_redirect=1前面的”;“去掉。
iii. 將;extension=php_curl.dll前面的”;“去掉。
iv. 將;extension=php_gd2.dll前面的”;“去掉。
v. 將;extension=php_mbstring.dll前面的”;“去掉。
vi. 將;extension=php_mysqli.dll前面的”;“去掉。
vii. 將;extension=php_openssl.dll前面的”;“去掉。
viii. 將;extension=php_pdo_mysql.dll前面的”;“去掉。
b. 在根目錄下新加文件php-cgi.vbs在里面填寫以下內(nèi)容:
set wscriptObj=CreateObject("Wscript.Shell")
wscriptObj.run "php-cgi -b 127.0.0.1:9000",0
雙擊php-cgi.vbs文件啟動(dòng)php
3. 在\nginx\html下新建一個(gè)phpinfo.php在里面填寫以下內(nèi)容:
<?php phpinfo(); ?>
4. 訪問url/phpinfo.php
5. 出現(xiàn)如下的信息就說明php已經(jīng)成功安裝:
三、部署項(xiàng)目
1.打開/nginx/conf下的nginx.conf文件來配置nginx(具體配置信息請參考文件 nginx-示例.conf)
注意:兩個(gè)server端口號一樣時(shí)需要另外配置域名;
host文件地址:C:\Windows\System32\drivers\etc
host文件中添加自己需要的域名
希望我的分享可以幫助到你,如果你在內(nèi)容技術(shù)上遇到難題,可以+關(guān)注■@主引教程 ,反饋給我們。我們會(huì)及時(shí)回復(fù),如果有那些內(nèi)容有誤可以直接提出來,我們會(huì)及時(shí)糾正,謝謝來訪。
、PHP配置文件中和上傳文件有關(guān)的選項(xiàng)
file_uploads=on 設(shè)置php腳本是否可以接受HTTP文件上傳
memory_limit=8M 設(shè)置腳本可以分配的最大內(nèi)存量, 防止失控的腳本獨(dú)占服務(wù)器內(nèi)存
upload_max_filesize=200M 限制php處理上傳文件大小的最大值, 此值必須小于post_max_size的值
最大不要超過服務(wù)器的內(nèi)存
upload_tmp_dir=c:/uploads/ 上傳文件存放的臨時(shí)路徑(默認(rèn)值:使用操作系統(tǒng)的臨時(shí)目錄), 該臨時(shí)文件的有效期就是腳本周期:
post_max_size=250M 限制通過post方法可以接受信息的最大值
此值除了包含上傳文件的大小, 還包含表單中的數(shù)據(jù), 因此此值必須大于upload_max_filesize
限制文件上傳的兩個(gè)參數(shù):
post_max_size=150M
upload_max_filesize=100M
post_max_size 必須大于 upload_max_filesize
max_execution_time PHP執(zhí)行的最大時(shí)間
max_input_time php 解析post/get數(shù)據(jù)所用的最大時(shí)間
如何獲取服務(wù)器能夠上傳的文件大小
<?php
function get_upload_max_size(){
return min(intval(get_cfg_var('upload_max_filesize')),intval(get_cfg_var('post_max_size')),intval(get_cfg_var('memory_limit')));
}
echo get_upload_max_size(); //3200M
二、上傳表單需要的注意事項(xiàng)
1. 如果有文件上傳操作表單的提交方法必須 HTTP post
2. 表單上傳需要使用type為file的表
3. enctype="multipart/form-data" 只有文件上傳時(shí)才使用這個(gè)值, 用來指定表單編碼的數(shù)據(jù)方式, 讓服務(wù)器知道, 我們要傳遞
一個(gè)文件并帶有常規(guī)的表單信息。
4. 建議添加一個(gè) MAX_FILE_SIZE 隱藏表單, 值的單位也是字節(jié)
<input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
三、PHP處理上傳的數(shù)據(jù)
$_POST 接收非上傳的數(shù)據(jù)
如果是文件上傳的數(shù)據(jù)則使用 $_FILES處理上傳的文件
<?php
//step 1 使用$_FILES['pic']["error"] 檢查錯(cuò)誤
if($_FILES["pic"]["error"] > 0){
switch($_FILES["pic"]["error"]) {
case 1:
echo "上傳的文件超過了 php.ini 中 upload_max_filesize 選項(xiàng)限制的值<br>";
break;
case 2:
echo "上傳文件的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項(xiàng)指定的值";
break;
case 3:
echo "文件只有部分被上傳";
break;
case 4:
echo "沒有文件被上傳";
break;
default:
echo "末知錯(cuò)誤";
}
exit;
}
$maxsize=5000000; //50k
//step 2 使用$_FILES["pic"]["size"] 限制大小 單位字節(jié) 2M=2000000
if($_FILES["pic"]["size"] > $maxsize ) {
echo "上傳的文件太大,不能超過{$maxsize}字節(jié)";
exit;
}
//step 3 使用$_FILES["pic"]["type"]或是文件的擴(kuò)展名 限制類型 MIME image/gif image/png gif png jpg
/* list($dl, $xl)=explode("/", $_FILES["pic"]["type"]);
if($dl!="image"){
echo "請上傳一個(gè)圖片,不充許其它類型文件";
exit;
}
*/
//$hz=strrchr($_FILES["pic"]["type"], "."); 后綴名含有"."
$allowtype=array("png", "gif", "jpg", "jpeg");
$arr=explode(".", $_FILES["pic"]["name"]);
$hz=$arr[count($arr)-1];
if(!in_array($hz, $allowtype)){
echo "這是不充許的類型";
exit;
}
//step 4 將讓傳后的文件名改名
$filepath="./uploads/"; //文件上傳不要采用根路徑 $filepath="/uploads/", 否則會(huì)報(bào)錯(cuò)
$randname=date("Y").date("m").date("d").date("H").date("i").date("s").rand(100, 999).".".$hz;
//將臨時(shí)位置的文件移動(dòng)到指定的目錄上即可
if(is_uploaded_file($_FILES["pic"]["tmp_name"])){
if(move_uploaded_file($_FILES["pic"]["tmp_name"], $filepath.$randname)){
echo "上傳成功";
}else{
echo "上傳失敗";
}
}else{
echo "不是一個(gè)上傳文件";
}
多文件上傳結(jié)構(gòu)
多個(gè)文件上傳后$_FILES 數(shù)組結(jié)構(gòu)圖
Array(
[myfile]=>Array(
[name]=>Array( //$_FILES["myfile"]["name"]存儲(chǔ)所有上傳文件的內(nèi)容
[0]=>Rav.ini //$_FILES["myfile"]["name"][0]第一個(gè)上傳文件的名稱
[1]=>msgsocm.log //$_FILES["myfile"]["name"][1]第二個(gè)上傳文件的名稱
[2]=>NOTEPAD.EXE) //$_FILES["myfile"]["name"][2]第三個(gè)上傳文件的名稱
[type]=>Array( //$_FILES["myfile"]["type"]存儲(chǔ)所有上傳文件的類型
[0]=>application/octet-stream //$_FILES["myfile"]["type"][0]第一個(gè)上傳文件的類型
[1]=>application/octet-stream //$_FILES["myfile"]["type"][1]第二個(gè)上傳文件的類型
[2]=>application/octet-stream) //$_FILES["myfile"]["type"][2]第三個(gè)上傳文件的類型
[tmp_name]=>Array(
[0]=>C:/WINDOWS/Temp/phpAF.tmp
[1]=>C:/WINDOWS/Temp/phpB0.tmp
[2]=>C:/WINDOWS/Temp/phpB1.tmp)
[error]=>Array(
[0]=>0
[1]=>0
[2]=>0)
[size]=>Array(
[0]=>64
[1]=>1350
[2]=>66560))
)
實(shí)例:
<html>
<head>
<meta charset="utf-8">
<title>index_uploads</title>
</head>
<body>
<form action="uploads.php" method="post" enctype="multipart/form-data">
<input type="file" name="file[]">
<br>
<input type="file" name="file[]">
<br>
<input type="submit" value="uploads">
</form>
</body>
</html>
<?php
header("content-type:text/html;charset=utf-8");
echo "<pre>";
print_r($_FILES);
echo "</pre>";
$count=count($_FILES['file']['name']);
for ($i=0; $i < $count; $i++) {
$tmpfile=$_FILES['file']['tmp_name'][$i];
$filefix=array_pop(explode(".", $_FILES['file']['name'][$i]));
$dstfile="uploads/files/".time()."_".mt_rand().".".$filefix;
if (move_uploaded_file($tmpfile, $dstfile)) {
echo "<script>alert('succeed!');window.location.href='index_uploads.php';</script>";
} else {
echo "<script>alert('fail!');window.location.href='index_uploads.php';</script>";
}
}
?>
相關(guān)函數(shù)
is_uploaded_file() 判斷文件是否是通過 HTTP POST 上傳的
bool is_uploaded_file ( string $filename )
move_uploaded_file() 將上傳的文件移動(dòng)到新位置
bool move_uploaded_file ( string $filename , string $destination )
$filename $_FILES["name"]["tmp_name"]
$destination 移動(dòng)文件到這個(gè)位置(包含文件的路徑和文件名)
注意: 上傳文件的腳本的所有者一定要有"w"的權(quán)限;
大文件上傳時(shí)延長上傳時(shí)間:
@set_time_limit(0);
新建表單
<form action='deal.php' method='post' enctype='multipart/form-data'>
選擇頭像:<input type='file' name='file' />
<hr />
<input type='submit' name='submit' value='上傳' />
</form>
deal.php
<?php
//1、設(shè)置響應(yīng)頭信息
header('Content-type:text/html; charset=utf-8');
//2、獲取上傳文件信息
if($_FILES['file']['size'] > 0) {
$file=$_FILES['file']['name'];
$filename=getRandName($file);
//3、把臨時(shí)文件上傳到uploads文件夾下(move_uploaded_file函數(shù))
if(move_uploaded_file($_FILES['file']['tmp_name'],'uploads/'.$filename)) {
echo '上傳成功';
} else {
echo '上傳失敗';
}
}
//定義一個(gè)函數(shù),用于獲取隨機(jī)文件
function getRandName($file) {
//定義一個(gè)變量,用于接收新名稱
$newname=date('YmdHis');
//定義一個(gè)字符串
$str='abcdefghijklmnopqrstuvwxyz';
//隨機(jī)取出其中6個(gè)字符
for($i=0;$i<6;$i++) {
$newname .=$str[mt_rand(0,strlen($str)-1)];
}
//返回生成后的新文件名稱
return $newname . strrchr($file,'.');
}
?>
多維$_FILES['uploadFile']數(shù)組進(jìn)行轉(zhuǎn)換
foreach($_FILES['uploadFile'] as $k=>$v){
foreach($v as $key=>$value){
if($key==$key){
$arr[$key][$k]=$value;
}
}
}
echo "<pre>";
print_r($arr);
echo "</pre>";
原數(shù)組的格式
Array
(
[name]=> Array
(
[0]=> laravel框架.txt
[1]=> ecshop分析.txt
[2]=> 注釋.txt
)
[type]=> Array
(
[0]=> text/plain
[1]=> text/plain
[2]=> text/plain
)
[tmp_name]=> Array
(
[0]=> C:\Windows\php562C.tmp
[1]=> C:\Windows\php562D.tmp
[2]=> C:\Windows\php563E.tmp
)
[error]=> Array
(
[0]=> 0
[1]=> 0
[2]=> 0
)
[size]=> Array
(
[0]=> 12506
[1]=> 138
[2]=> 2094
)
)
轉(zhuǎn)換后數(shù)組格式:
*請認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。