大家好,今天小编来为大家解答php本地服务器这个问题,怎样在本地测试php代码很多人还不知道,现在让我们一起来看看吧!

一、经典怎样通过php将本地的文件上传到服务器上

创建一个文件上传表单

允许用户从表单上传文件是非常有用的。

请看下面这个供上传文件的 HTML表单:

<html>

<body>

<form action="upload_file.php" method="post"

enctype="multipart/form-data">

<label for="file">Filename:</label>

<input type="file" name="file" id="file"/>

<br/>

<input type="submit" name="submit" value="Submit"/>

</form>

</body>

</html>

请留意如下有关此表单的信息:

<form>标签的 enctype属*规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用"multipart/form-data"。

<input>标签的 type="file"属*规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。

注释:允许用户上传文件是一个巨大的安全风险。请仅仅允许可信的用户执行文件上传操作。

php本地服务器 怎样在本地测试php代码

创建上传脚本

"upload_file.php"文件含有供上传文件的代码:

<?php

if($_FILES["file"]["error"]> 0)

{

echo"Error:".$_FILES["file"]["error"]."<br/>";

}

else

{

echo"Upload:".$_FILES["file"]["name"]."<br/>";

echo"Type:".$_FILES["file"]["type"]."<br/>";

echo"Size:".($_FILES["file"]["size"]/ 1024)." Kb<br/>";

echo"Stored in:".$_FILES["file"]["tmp_name"];

}

?>

通过使用 PHP的全局数组$_FILES,你可以从客户计算机向远程服务器上传文件。

第一个参数是表单的 input name,第二个下标可以是"name","type","size","tmp_name"或"error"。就像这样:

$_FILES["file"]["name"]-被上传文件的名称

$_FILES["file"]["type"]-被上传文件的类型

$_FILES["file"]["size"]-被上传文件的大小,以字节计

$_FILES["file"]["tmp_name"]-存储在服务器的文件的临时副本的名称

$_FILES["file"]["error"]-由文件上传导致的错误代码

这是一种非常简单文件上传方式。基于安全方面的考虑,您应当增加有关什么用户有权上传文件的限制。

上传限制

在这个脚本中,我们增加了对文件上传的限制。用户只能上传.gif或.jpeg文件,文件大小必须小于 20 kb:

<?php

if((($_FILES["file"]["type"]=="image/gif")

||($_FILES["file"]["type"]=="image/jpeg")

||($_FILES["file"]["type"]=="image/pjpeg"))

&&($_FILES["file"]["size"]< 20000))

{

if($_FILES["file"]["error"]> 0)

{

echo"Error:".$_FILES["file"]["error"]."<br/>";

}

else

{

echo"Upload:".$_FILES["file"]["name"]."<br/>";

echo"Type:".$_FILES["file"]["type"]."<br/>";

echo"Size:".($_FILES["file"]["size"]/ 1024)." Kb<br/>";

echo"Stored in:".$_FILES["file"]["tmp_name"];

}

}

else

{

echo"Invalid file";

}

?>

注释:对于 IE,识别 jpg文件的类型必须是 pjpeg,对于 FireFox,必须是 jpeg。

保存被上传的文件

上面的例子在服务器的 PHP临时文件夹创建了一个被上传文件的临时副本。

这个临时的复制文件会在脚本结束时消失。要保存被上传的文件,我们需要把它拷贝到另外的位置:

<?php

if((($_FILES["file"]["type"]=="image/gif")

||($_FILES["file"]["type"]=="image/jpeg")

||($_FILES["file"]["type"]=="image/pjpeg"))

&&($_FILES["file"]["size"]< 20000))

{

if($_FILES["file"]["error"]> 0)

{

echo"Return Code:".$_FILES["file"]["error"]."<br/>";

}

else

{

echo"Upload:".$_FILES["file"]["name"]."<br/>";

echo"Type:".$_FILES["file"]["type"]."<br/>";

echo"Size:".($_FILES["file"]["size"]/ 1024)." Kb<br/>";

echo"Temp file:".$_FILES["file"]["tmp_name"]."<br/>";

if(file_exists("upload/".$_FILES["file"]["name"]))

{

echo$_FILES["file"]["name"]." already exists.";

}

else

{

move_uploaded_file($_FILES["file"]["tmp_name"],

"upload/".$_FILES["file"]["name"]);

echo"Stored in:"."upload/".$_FILES["file"]["name"];

}

}

}

else

{

echo"Invalid file";

}

?>

上面的脚本检测了是否已存在此文件,如果不存在,则把文件拷贝到指定的文件夹。

二、怎样在本地测试php代码

准备工作首先要如下软件,推荐到官网,如果你是像我一样只是测试,那么到sky.吧,这样比较快。

Apache

最流行的HTTP服务器软件之一。快速、可靠、可通过简单的API扩展,Perl/Python解释器可被编译到服务器中,完全免费,完全源代码开放。

我的是for Windows版本,目前最新版本是:2.0.54

PHP

PHP是一种 HTML内嵌式的语言。而PHP独特的语法混合了 C、J*a、Perl以及 PHP式的新语法。它可以比 CGI或者 Perl更快速的执行动态网页。

我的是for Windows版本,目前最新版本是:5.0.4

MySQL

是一个多线程的,结构化查询语言(SQL)数据库服务器。SQL在世界上是最流行的数据库语言。MySQL的执行*能非常高,运行速度非常快,并非常容易使用。

我的是for Windows版本,目前最新版本是:5.0.4 Beta

phpMyAdmin

phpMyAdmin是一个用PHP编写的,可以通过互联网控制和操作MySQL。通过phpMyAdmin可以完全对数据库进行操作。

我的是for Windows版本,目前最新版本是:2.6.2-pl1

安装apache和PHP

下面是我的安装记录:

选择80端口,将apache安装在 e:\apache下。

配置apache里的d.conf文件(conf目录下)

找到 DocumentRoot E:/apache/Apache2/htdocs将其改为WEB目录E:/htdocs

找到 DirectoryIndex index.html index.html.var在后面加入 index.htm index.php default.php default.html

选择模块化模式安装

找到#LoadModule ssl_module modules/mod_ssl.so这行,在此行后加入一行

LoadModule php5_module e:/php/php5apache2.dll

找到 AddType lication/x-gzip.gz.tgz这行,在此行后加入一行

AddType lication/x-d-php.php

将php-5.0.4-Win32.zip里内容解压到e:\php里,找到php.ini-remended,重命名为php.ini并拷贝到windows目录下。

NTFS上记得给服务器开PHP.ini的读权限。

查找extension_dir后面的改为e:/php/ext

查找Windows Extensions,把下面有一排的;extension=php_***.dll的分号去掉,就是支持组件了。我把 extension=php_gd2.dll extension=php_mbstring.dll extension=php_mysql.dll的分号去掉了。

php5默认不支持mysql了,所以要为他添加支持,除了extension=php_mysql.dll去分号之外,在php目录里有个libmysql.dll文件,把它复制到系统的system32文件夹下,复制php.ini到windows目录下。

此时PHP环境基本已经配置成功

在WEB根目录里建一个名为test.php的文件内容如下

<? echo phpinfo();?>

重新启动apache服务,用浏览器打开

如果可以看到php配置输出信息就成功了

安装mysql

将mysql安装到指定目录,然后安装程序会引导你一步步配置。不过奇怪的是最后任务栏没有出现Mysql的图标。

修改mysql数据库的root密码

用cmd进入命今行模式输入如下命令:(注: d:\mysql为mysql安装目录)

cd d:\mysql\bin

mysqladmin-u root-p password 123456

回车出现

Enter password:(注:这是叫你输入原密码.刚安装时密码为空,所以回车即可)

此时mysql中账号 root的密码被改为 123456安装完毕

配置php.ini并测试mysql

找到extension_dir=./改为 extension_dir= e:/php/ext

找到

;extension=php_mysql.dll

将';'去掉改为

extension=php_mysql.dll

找到

;session.s*e_path=/tmp

将';'去掉设置你保存session的目录,如

session.s*e_path= e:/php/session_temp

重启apache服务

在Web根目录下建立testdb.php文件内容如下:

<?php

$link=mysql_connect('localhost','root','123456');

if(!$link) echo fail;

else echo suess;

mysql_close();

?>

用浏览器打开如果输出suess就OK了

phpmyadmin的安装配置

将phpMyAdmin-V2.6.2-pl1.zip解压到WEB根目录中去,重命名文件夹为phpmyadmin或其它

打开phpmyadmin目录中的 config.inc.php

找到

$cfg['Servers'][$i]['user']='root';

$cfg['Servers'][$i]['password']='123456';

分别填上用户名和密码

三、php项目如何部署在服务器上

一、阿里ECS服务器配置

1.因为线上已经有几个站点了.所以要配置ngnix多站点

2.阿里云ecs目录结构,ngxin在/etc/nginx/目录下,配置的地方主要是nginx.config文件。或者在conf.d新建一个配置文件然后在include到nginx.config文件中

3.nginx.config新建站点信息

server{

listen 80;

server_name 你的域名.;

root站点的相对路径;

index index.php index.html index.htm;

#charset koi8-r;

#aess_log/var/log/nginx/host.aess.log main;

# Load configuration files for the default server block.

include/etc/nginx/default.d/*.conf;

location/{

#try_files$uri$uri//index.php;

root/opt//pcweb/ytyy_pc;

index index.php index.html index.htm; if(!-e$request_filename){ rewrite ^(.*)$/index.php?s=$1 last; break;}} url重写(可以没有)

# redirect server error pages to the static page/40x.html

#

error_page 404/404.html; 40错误页面配置

location=/40x.html{

}

# redirect server error pages to the static page/50x.html

#

error_page 500 502 503 504/50x.html; 50错误页面配置

location=/50x.html{

}

location~ \.php${

root站点相对路径;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME$document_root$fastcgi_script_name;

include fastcgi_params;

}

location~/\.ht{

deny all;

}

}

配置文件的基本内容如上;

配置完成后测试配置文件是否正确

这样配置就可以使用了

然后重启nginx服务器

这样nginx配置就结束了可以使用了。吧站点文件放到对应的目录下面。我git clone过去的。

二.thinkphp项目文件转移

本来以为上传完就结束了。上传上去碰到的第一个问题就是访问页面报错,页面被电信的114页面劫持了。。。麻蛋看不到报错

万能百度大法

解决方法1.inter高级选项->隐私->站点新加阻止站点

解决方法2:控制面板->网络和inter->本地连接->属*->ipv4使用如下ip

终于搞定可以看到报错页面了。。。。。。麻蛋。再次开启万能百度大法

得到最终结论是文件目录权限引起的。thinkphp的runtime目录没有写入权限。。thinkphp文件上传到阿里的好像都有这个问题。解决问题很简单

进入到项目文件目录

跟文件最高权限

chmod-R 777 [目录]//linux修改文件权限