当前位置:首页 > 视频 > 千峰教育资源下载

从PHP基础到实战高手 高性能Linux服务器构建实战 千峰教育PHP全新版高级视频教程

大小:49 GB

给大家带来的是关于千峰教育相关的资源,介绍了关于PHP基础、Linux服务器构建、千峰教育、PHP视频方面的内容,资源大小49 GB,由邱胤祥网友提供。

从PHP基础到实战高手

一、PHP中调用外部命令介绍

在PHP中调用外部命令,可以用,1>调用专门函数、2>反引号、3>popen()函数打开进程,三种方法来实现:

方法一:用PHP提供的专门函数(四个):

PHP提供4个专门的执行外部命令的函数:exec(), system(), passthru(), shell_exec()

1)exec()

原型: string exec ( string $command [, array &$output [, int &$return_var ] )

说明: exec执行系统外部命令时不会输出结果,而是返回结果的最后一行。如果想得到结果,可以使用第二个参数,让其输出到指定的数组。此数组一个记录代表输出的一行。即如果输出结果有20行,则这个数组就有20条记录,所以如果需要反复输出调用不同系统外部命令的结果,最好在输出每一条系统外部命令结果时清空这个数组unset($output),以防混乱。第三个参数用来取得命令执行的状态码,通常执行成功都是返回0。

<?php
  exec("dir",$output);
  print_r($output);
?>

2)system()

原型: string system ( string $command [, int &$return_var ] )

说明: system和exec的区别在于,system在执行系统外部命令时,它执行给定的命令,输出和返回结果。第二个参数是可选的,用来得到命令执行后的状态码。

<?php
system("pwd",$result);
print $result;//输出命令的结果状态码
?>

关于第二个参数结果状态码的简单介绍:

如果返回0是运行成功,

在Bash中,当错误发生在致命信号时,bash会返回128+signal number做为返回值。

如果找不到命令,将会返回127。

如果命令找到了,但该命令是不可执行的,将返回126。

除此以外,Bash本身会返回最後一个指令的返回值。

若是执行中发生错误,将会返回一个非零的值。

Fatal Signal : 128 + signo
Can't not find command : 127
Can't not execute : 126
Shell script successfully executed : return the last command exit status
Fatal during execution : return non-zero
 

3)passthru()

原型: void passthru ( string $command [, int &$return_var ] )

说明: passthru与system的区别,passthru直接将结果输出到游览器,不返回任何值,且其可以输出二进制,比如图像数据。第二个参数可选,是状态码。

<?php
header("Content-type:image/gif");
passthru("/usr/bin/ppm2tiff /usr/share/tk8.4/demos/images/teapot.ppm");
?>
 

4)shell_exec()

原型: string shell_exec ( string $cmd )

说明: 直接执行命令$cmd

<?php
$output = shell_exec('ls -lart');
echo "<pre>$output</pre>";
?>

高性能Linux服务器构建实战 

方法二:反撇号

原型: 反撇号`(和~在同一个键)执行系统外部命令

说明: 在使用这种方法执行系统外部命令时,要确保shell_exec函数可用,否则是无法使用这种反撇号执行系统外部命令的。

<?php
  echo `dir`;
?>

方法三:用popen()函数打开进程

原型: resource popen ( string $command , string $mode )

说明: 能够和命令进行交互。之前介绍的方法只能简单地执行命令,却不能与命令交互。有时须向命令输入一些东西,如在增加系统用户时,要调用su来把当前用户换到root用户,而su命令必须要在命令行上输入root的密码。这种情况下,用之前提到的方法显然是不行的。

popen( )函数打开一个进程管道来执行给定的命令,返回一个文件句柄,可以对它读和写。返回值和fopen()函数一样,返回一个文件指针。除非使用的是单一的模式打开(读or写),否则必须使用pclose()函数关闭。该指针可以被fgets(),fgetss(),fwrite()调用。出错时,返回FALSE。

<?php
error_reporting(E_ALL);
 
/* Add redirection so we can get stderr. */
$handle = popen('/path/to/executable 2>&1', 'r');
echo "'$handle'; " . gettype($handle) . "\n";
$read = fread($handle, 2096);
echo $read;
pclose($handle);
?>

二、关于安全问题:

由于PHP基本是用于WEB程序开发的,所以安全性成了人们考虑的一个重要方面。

于是PHP的设计者们给PHP加了一个门:安全模式。

在php.ini中的设置safe_mode = On

如果运行在安全模式下,那么PHP脚本中将受到如下四个方面的限制:

执行外部命令
在打开文件时有些限制
连接MySQL数据库
基于HTTP的认证

在安全模式下,只有在特定目录中的外部程序才可以被执行,对其它程序的调用将被拒绝。这个目录可以在php.ini文件中用safe_mode_exec_dir指令,或在编译PHP 是加上–with-exec-dir选项来指定,默认是/usr/local/php/bin。

当你使用这些函数来执行系统命令时,可以使用escapeshellcmd()和escapeshellarg()函数阻止用户恶意在系统上执行命令,escapeshellcmd()针对的是执行的系统命令,而escapeshellarg()针对的是执行系统命令的参数。这两个参数有点类似addslashes()的功能。

三、关于超时问题

当执行命令的返回结果非常庞大时,可以需要考虑将返回结果输出至其他文件,再另行读取文件,这样可以显著提高程序执行的效率。

如果要执行的命令要花费很长的时间,那么应该把这个命令放到系统的后台去运行。但在默认情况下,象system()等函数要等到这个命令运行完才返回(实际上是在等命令的输出结果),这肯定会引起PHP脚本的超时。解决的办法是把命令的输出重定向到另外一个文件或流中,如:

<?php
system("/usr/local/bin/order_proc > /tmp/abc ");
?>

但我调用的DOS命令需要几分钟的时间,而且为了批处理不能简单的把结果写入文件了事,要顺序执行以下的程序

PHP设置了调用系统命令的时间限制,如果调用命令超时,虽然这个命令还是会被执行完,但PHP没有得到返回值,被终止了(最可恨的是,不显示任何错误)

修改php.ini并重启Apache以允许系统命令运行更长的时间

max_execution_time = 600

四、关于PHP运行linux环境中命令出现的问题

php一般是以apache用户身份去执行的,也可能是www用户,把apache加入到存储你文件的父文件夹属组里去,然后改该父文件夹权限为775,这样属组成员就有写的权限,而apache属于这个组就可以改写该目录下所有文件的权限。

例如:chown www:www dirName

这样dirName目录才能被php所控制

注意:改apache/php的运行用户方法不安全

另外即使文件或目录已经是www,php的安全设置也都照顾到,一些自己安装linux的命令仍然可能无法运行,例如我曾经安装的ffmpeg软件,原因就是linux的运行权限问题,即使ffmpeg有www权限设置,但由于ffmpeg所依赖的库文件是不允许www用户运行,所以php运行此程序仍然会报127或126错误,通过 ldd 命令可以查看ffmpeg命令依赖的库情况。

这个时候就必须对ffmpeg的依赖库经行设置。具体方法属于linux管理中的话题,这里不就讨论了。

展开 +

收起 -

500套java毕业设计、PHP毕业设计视频演示

500多套的相关java、php的相关毕业设计项目视频演示,大家可以参考下里面的项目名称以及相关的界面,需要的毕业生们参考下吧。

查看详情
PHP开发高可用高安全App后端 全套视频教程 查看详情
Linux命令速查手册

这是一本关于Linux各种常用和实用命令的参考指南,能够帮助你高效地开展工作,无论你是需要迅速了解Linux的新手,还是正在寻找某些功能的简洁介绍的老手,都能从本书中迅速找到答案

查看详情
嵌入式Linux软硬件开发详解

本书全面介绍了嵌入式Linux系统开发过程中,从硬件设计到系统移植、软件开发的各方面内容,包含硬件设备的设计原理(囊括了常见硬件,如RAM、Flash、UART、USB、LCD和电源管理等)、Linux操作

查看详情
Linux内核设计与实现 查看详情
Linux/UNIX和Window平台上安装Mysql步骤详解

这篇文章主要为大家详细介绍了Linux/UNIX和Window两个系统上采用命令安装Mysql的方法,感兴趣的小伙伴们可以参考一下

查看详情
《Python Linux系统管理与自动化运维》Ansible详解(一)

这是一篇关于《Python Linux系统管理与自动化运维》学习后的关于Ansible知识点的详解内容,主要介绍了Ansible维护模式通常由控制机和被管理机组成。有兴趣的朋友们可以参考下。

查看详情
如何解决linux配置mysql数据库远程连接失败的问题

这篇文章主要为大家详细介绍了linux配置mysql数据库远程连接失败的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

查看详情
Linux CentOS7下安装python3的步骤详解

在CentOS7下,默认安装的就是python2.7,下面通过本文给大家分享Linux CentOS7下安装python3 的方法,需要的朋友参考下吧

查看详情
《Python Linux系统管理与自动化运维》学习总结

1. 1秒钟启动一个下载服务器 在要访问文件的目录下执行:python3 -m http.server 在网页上访问:http://ip:8000/ 就可以下载该目录下的文件(windows中也可以用) 2. python 一行试解析json echo {job: developer, name: lmx, sex: male} | python -m json.tool cat 1.txt | python -m json.tool (1.txt中是json类型的数据) 3.检查第三方库是否正确安装 如

查看详情
linux开机自启动python程序代码方法

在本篇文章中小编给大家分享了关于linux开机自启动python程序代码方法,对此有需要的朋友们学习下。

查看详情
linux无法联网怎么下载python

在本篇文章里小编给大家整理的是关于linux无法联网怎么下载python的具体方法和实例代码,有需要的朋友们参考学习下。

查看详情
 
网友NO.548804

thinkphp项目部署到Linux服务器上报错“模板不存在”如何解决

最近一个项目部署到Linux服务器上去的时候,发现某些模板竟然会报错说“模板不存在:/Application/Admin/....” 检查了服务器上的文件,并没有缺少文件,再次上传文件到服务器,还是报错。莫名其妙,怀疑是代码问题。 仔细检查后,发现是 模板的文件名问题 : 用过TP的都知道:thinkphp会在$this-display()的时候,会自动获取方法名作为模板的文件名,比如一个getUserInfo方法对用着getuserinfo.html的模板文件。 对控制器里的方法,我用驼峰命名法,而view层里的模板名,也是用了驼峰命名法。比如getUserInfo方法对应了getUserInfo.html的模板文件,但是!thinkphp在$this-display()的时候,读取方法名作为模板名,读出来的方法名是小写的,也就是要求模板名为getuserinfo.html。 在Windows下不区分文件名大小写,Linux会区分,所以报错了。 解决办法: 要么改模板文件名为小写,……

网友NO.524453

Linux环境下php实现给网站截图的方法

本文实例讲述了Linux环境下php实现给网站截图的方法。分享给大家供大家参考,具体如下: 第一步:下载wkhtmltopdf [root@iZ94aawoublZ ~]# wget http://download.gna.org/wkhtmltopdf/0.12/0.12.3/wkhtmltox-0.12.3_linux-generic-amd64.tar.xz 第二步:解压 [root@iZ94aawoublZ ~]# xz -d wkhtmltox-0.12.3_linux-generic-amd64.tar.xz 第三步:继续解压 [root@iZ94aawoublZ ~]# tar xvf wkhtmltox-0.12.3_linux-generic-amd64.tar 第四步:选择目录 [root@iZ94aawoublZ ~]# cd wkhtmltox [root@iZ94aawoublZ wkhtmltox]# ls bin include lib share 第五步:选择lib目录 [root@iZ94aawoublZ wkhtmltox]# cd lib/ [root@iZ94aawoublZ lib]# ls libwkhtmltox.so libwkhtmltox.so.0 libwkhtmltox.so.0.12 libwkhtmltox.so.0.12.3 第六步:复制libwkhtmltox.so到usr/local/lib [root@iZ94aawoublZ lib]# cp libwkhtmltox.so /usr/local/lib [root@iZ94aawoublZ lib]# cd ../include/ 第七步 [root@iZ94aawoublZ include]# cp -R wkhtmltox/ /usr/local/include/ 第八步:安装php wkht……

网友NO.580982

Linux系统中为php添加pcntl扩展

pcntl扩展可以支持php的多线程操作(仅限linux) 原本需要重新编译PHP的后面configrue提示加上--enable-pcntl 由于我的php是采用yum安装的,所以不能采用上面的方式 下面介绍一个php动态添加扩展的方式 phpize 1、首先看下 phpize命令 所在的目录 (ps:我的目录/usr/bin/phpize) 如果没有找到的话 执行安装 yum install php53_devel (ps:请注意自己的版本) 安装完毕后。会生成phpize命令 2、去php.net下载相应版本的php源文件 咱们以php-5.3.17 为例吧,解压后,进入相应的模块下 cd ext/pcntl#先执行phpize/usr/bin/phpize./configure --with-php-config=/usr/bin/php-config (ps:请正确的指定php-config的目录)#编译、安装make make install 这时候出了一个错误 ./configure编译正常,但make出错 error: ‘PHP_FE_END' undeclared here (not in a function) 解决方法: 源代码有错误,进入php-5.3.17目录 sed -i 's|PHP_FE_END|{NULL,NULL,NULL}|' ……

网友NO.158484

Linux平台中使用PHP把word转pdf的实现方法

Linux平台中使用PHP把word转pdf的实现方法 1、ubantu下安装libreoffice sudo apt-get install libreoffice 2、命令行执行word转pdf 将 /home/wordToPdf/wordFiles/目录下的CAS.docx转成pdf存放到 /home/wordToPdf/pdfFiles 目录下: libreoffice --headless --convert-to pdf:writer_pdf_Export /home/wordToPdf/wordFiles/CAS.docx --outdir /home/wordToPdf/pdfFiles /usr/share/fonts 下放中文字体 fc-cache-fv 更新字体缓存 在php中执行的代码 $a='./doc/2.doc'; $b='./pdf'; //$str ="libreoffice --headless --convert-to pdf:writer_pdf_Export ./doc/2.doc --outdir ./pdf"; //$str ='ls '.'./'; $str = "export HOME=/tmp libreoffice --headless -convert-to pdf /var/www/html/doc/2.doc -outdir /var/www/html/pdf"; var_dump(system($str)); 在linux中使用php将word文档转为pdf 使用本教程需要在linux中安装openoffice,改页面中有详细的安装与使用教程 ( linux平台的office文档转pdf的实例(程序员的菜) )。 既然,你看了该教程就应该……

网友NO.363754

vmware linux系统安装最新的php7图解

php7比旧版本的性能提高了好多倍,linux通过yum安装php7。 首先我们先检查一下我们之前的php版本,通过yum list installed | grep php,如果没有输出信息说明是没有安装php 如果有安装php,首先卸载之前的php版本,通过命令yum remove php*,卸载php所有的依赖 过yum list |grep php 查看一下php版本,发现现在是5.4的版本。 现在php5.4,如果我们单独安装需要解决一些依赖问题,通过yum来解决依赖问题,通过命令我们引入云源 通过命令查看该源对应的安装包 执行安装php7.0,下载编译安装,如果网络慢的话,需要等一会 执行安装完毕以后查看一下php版本 ……

上一篇:刘道成老师PHP+Mysql经典视频教程 41讲完整版  下一篇:Python语言初探入门学习视频教程 炼数成金12周Python语言精华培训视频教程

码农之家

邱胤祥 提供上传

资源
42
粉丝
29
喜欢
1
评论
1

Copyright 2018-2020 xz577.com 码农之家

本站所有电子书资源不再提供下载地址,只分享来路

免责声明:网站所有作品均由会员网上搜集共同更新,仅供读者预览及学习交流使用,下载后请24小时内删除

版权投诉 / 书籍推广 / 赞助:QQ:520161757