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}|' ./ext/**/*.c
sed -i 's|ZEND_MOD_END|{NULL,NULL,NULL}|' ./ext/**/*.c

再重新make && make install

3、编译完毕后会生成了一个  pcntl.so的文件。在php的model目录里

编辑/etc/php.ini,加入

extension=pcntl.so

4、重启apache

service httpd restart

5、测试是否安装成功

<?php
echo pcntl_fork();
?>

输出:23165

php代码:
/**
* 导出文件
* @return string
*/
public function export()
{
$file_name = "成绩单-".date("Y-m-d H:i:s",time());
$file_suffix = "xls";
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=$file_name.$file_suffix");
//根据业务,自己进行模板赋值。
$this->display();
}

HTML代码:

<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<meta name=ProgId content=Excel.Sheet>
<meta name=Generator content="Microsoft Excel 11">
</head>
<body>
<table border=1 cellpadding=0 cellspacing=0 width="100%" >
<tr>
<td colspan="5" align="center">
<h2>成绩单</h2>
</td>
</tr>
<tr>
<td style='width:54pt' align="center">编号</td>
<td style='width:54pt' align="center">姓名</td>
<td style='width:54pt' align="center">语文</td>
<td style='width:54pt' align="center">数学</td>
<td style='width:54pt' align="center">英语</td>
</tr>
<tr>
<td align="center">1</td>
<td style="" align="center">Jone</td>
<td style="" align="center">90</td>
<td style="" align="center">85</td>
<td style="" align="center">100</td>
</tr>
<tr>
<td align="center">2</td>
<td style="" align="center">Tom</td>
<td style="" align="center">99</td>
<td style="" align="center">85</td>
<td style="" align="center">80</td>
</tr>
</table>
</body>
</html>

我们再来看一个更方便的组件

在这里需要用到PEAR的两个软件包 Spreadsheet Excel Writer 和 OLE,如果没有可以分别从 http://pear.php.net/package/Spreadsheet_Excel_Writer/ 和 http://pear.php.net/package/OLE/ 下载,解压放在PEAR目录下。

全部代码如下:

<?php
include 'Writer.php';
/* *** 准备导出的数据 *** */
$head = 'One Week Schedule';
$data = array('Monday' => array( array('time' => '09:00', 'event' => '公司例会例会'), array('time' => '14:00', 'event' => '部门例会') ),
'Tuesday' => array( array('time' => '09:30', 'event' => '和 Mr. Stinsen 早餐')),
'Wednesday' => array(array('time' => '12:10', 'event' => '市场中阶报告'), array('time' => '15:30', 'event' => '市场部战略部署会议') ),
'Thursday' => array( array('time' => '', 'event' => '')),
'Friday' => array( array('time' => '16:00', 'event' => 'WoC Stock 研讨会'), array('time' => '17:00', 'event' => '飞往华尔街'), array('time' => '21:00', 'event' => '会见克林顿'))
);
/* *** *** */
$workbook = new Spreadsheet_Excel_Writer();
$filename = date('YmdHis').'.xls';//csv
$workbook->send($filename); // 发送 Excel 文件名供下载
$workbook->setVersion( 8 );
$sheet = &$workbook->addWorksheet("Sheet1"); // 创建工作表
$sheet->setInputEncoding('utf-8'); // 字符集
$headFormat = &$workbook->addFormat(array('Size' => 14, 'Align' => 'center','Color' => 'white', 'FgColor' => 'brown', 'Bold'=>'1', 'Border' => '1'));//定义格式
$dayFormat = &$workbook->addFormat(array('Size' => 12, 'Align' => 'center', 'VAlign' => 'vcenter', 'FgColor' => 'green', 'Color' => 'white', 'Border' => '1'));//定义格式
$dataFormat = &$workbook->addFormat(array('Size' => 10, 'Align' => 'left', 'Border' => '1', 'Color' => 'black', 'FgColor'=> 'cyan'));//定义格式
$sheet->setColumn(0, 0, 20); // 设置宽度
$sheet->setColumn(1, 1, 15); // 设置宽度
$sheet->setColumn(2, 2, 30); // 设置宽度
$r = 0; 
$sheet->write(0, $r, $head, $headFormat); // 表格标题
$sheet->mergeCells(0, 0, 0, 2); // 跨列显示
$r++; // 数据从第2行开始
foreach ($data as $day => $events){
$c = 0;
$sheet->write($r, $c, $day, $dayFormat);
if (!$events){
// 当天没有计划
$r++;
} else {
$startRow = $r;
foreach ($events as $e){
$c = 1;
$sheet->write($r, $c++, $e['time'], $dataFormat); // 工作表写入数据
$sheet->write($r, $c++, $e['event'], $dataFormat); // 工作表写入数据
$r++;
}
// 合并 $day 单元格
$sheet->mergeCells($startRow, 0, $r - 1, 0);
}
}
$workbook->close(); // 完成下载
 ?>

来源:https://www.cnblogs.com/2881064178dinfeng/p/6207834.html

Linux系统中为php添加pcntl扩展的方法相关推荐

  1. php 7 pcntl扩展,PHP_Linux系统中为php添加pcntl扩展,pcntl扩展可以支持php的多线程 - phpStudy...

    Linux系统中为php添加pcntl扩展 pcntl扩展可以支持php的多线程操作(仅限linux) 原本需要重新编译PHP的后面configrue提示加上--enable-pcntl 由于我的ph ...

  2. Linux下添加计划任务,Linux系统下使用crontab添加计划任务的方法

     在服务器中添加定期执行的任务,在很多情况下是非常必要的.比如,每天清理一次/tmp目录下的文件;没几分钟检查某一守护进程是否正常等等.这样计划任务就显得尤为方便.下面将介绍如何在Linux系统中 ...

  3. Linux系统中运行.sh文件的几种方法

    在Linux系统中执行.sh文件的几种方法: 1. cd到.sh文件所在的目录,然后执行./xxx.sh   [前提:该./sh文件要有可执行的权限,chmod u+x xxx.sh]  2. 在任何 ...

  4. linux系统下定时备份,在Linux系统中简单地实现定时备份的方法 -电脑资料

    运行一个简单的脚本 假设你有一个脚本叫:/usr/local/bin/myscript. ,你想要每隔一小时就运行一次, Service 文件 第一步,创建一个service文件,根据你Linux的发 ...

  5. linux系统中清空文件内容的三种方法

    1.使用vi/vim命令打开文件后,输入"%d"清空,后保存即可.但当文件内容较大时,处理较慢,命令如下: vim file_name :%d :wq 2.使用cat命令情况,命令 ...

  6. 虚拟机linux gedit,Linux系统中把gedit改造成TextMate的方法

    TextMate是一款轻量级的文本编辑器软件,它具有出色的界面和强大的功能,能够提升开发者的编码效率.这款软件也开放源代码了,但是只能在Mac OS X上使用,因此小编下面给大家介绍一个方法,能够把g ...

  7. linux 终端交换caps,linux系统中ctrl和capslock键互换的方法

    今天这篇教程我们来为大家介绍一下,linux系统中ctrl和capslock键互换的方法,有兴趣的朋友就来参考一下吧. 1.首先,点击任务栏上的"启动器". 2.在"启动 ...

  8. 如何为Linux系统中的SSH添加双重认证

    近来很多知名企业都出现了密码泄露,业内对多重认证的呼声也越来越高.在这种多重认证的系统中,用户需要通过两种不同的认证程序:提供他们知道的信息(如 用户名/密码),再借助其他工具提供用户所不知道的信息( ...

  9. 在Linux系统中存储设备的两种表示方法

    作者:北南南北 来自:LinuxSir.Org 摘要: 硬盘和硬盘分区在Linux都表示为设备,按我们通俗的说法来说,就是怎么来表示或描述硬盘和或硬盘分区,但这种描述应该是科学和具体的:比如IDE硬盘 ...

最新文章

  1. (转)PJSIP入门:编译,运用PJSIP,PJMEDIA
  2. es6 数组找最大值_JavaScript 查找数组中最大值与最小值
  3. LINUX 如何实现多线程进行cp复制
  4. java web项目无xml配置,完全javaconfig方式参考资料
  5. Dos命令使用Latex编写“Hello Latex.”
  6. 企业ERP选型的两难困惑
  7. python2.0 s12 day4
  8. 机器学习算法-详细白板推导系列视频
  9. linux脚本vrrp_script,keepalived之vrrp_script详解
  10. DeepFake捏脸真假难辨,汤姆·克鲁斯比本人还像本人!
  11. 图解机器学习算法(1) | 机器学习基础知识(机器学习通关指南·完结)
  12. LeetCode刷题之1818. 绝对差值和
  13. Elastic Stack容器化部署拓展(Https、AD域集成)并收集Cisco设备的日志信息
  14. Vue-change和input事件
  15. 计算机自培计划,个人年度自培计划
  16. ShareSDK Android 第三方平台分享参数说明
  17. ZYNQ-XDC语法
  18. C++数组——冰雹猜想
  19. Spectacle源码及分析2 —— Main.cpp解析1
  20. wordpress 不用插件添加友情链接

热门文章

  1. OpenCv——merge()函数数据合并
  2. java的算法库_利用Java写开源库 覆盖70多种推荐算法
  3. 42_ResNet (深度残差网络)---学习笔记
  4. 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)
  5. Scala编译器安装,开发工具安装,通过IDEA创建scala的工程代码,Scala SDK的设置
  6. tomcat自动运行磁盘任意位置上的项目、使用Maven对tomcat进行自动部署
  7. 8.Eclipse中创建Maven Web项目
  8. 通过sqlplus执行*.sql文件时常见的问题总结
  9. 关于WebService中用到的QName详解
  10. Mysql数据目录初识