关于php创建扩展的一个坑:找不到skeleton

简介: 关于php创建扩展的一个坑:找不到skeleton

在前几天,我突然想研究树莓派的php io扩展,然后开始看自己之前的扩展开发教程:http://www.php20.cn/article/sw/%E6%89%A9%E5%B1%95/177

随便下载了一个php7.1的版本,cd 进入ext文件:

pi@raspberrypi:~/php-src-php-7.1.29 $ cd ext/
pi@raspberrypi:~/php-src-php-7.1.29/ext $ ls
bcmath    com\_dotnet  date  enchant   ext\_skel_win32.php  ftp      gmp    imap       json    mbstring
bz2       ctype       dba   exif      fileinfo            gd       hash   interbase  ldap
calendar  curl        dom   ext_skel  filter              gettext  iconv  intl       libxml
pi@raspberrypi:~/php-src-php-7.1.29/ext $

才发现,原来只有php7.3的某一个版本,才是用的 ext_skel.php   文件生成,在之前的版本,都是shell

image.png

其实都差不多啦,然后我开始了正常的生成操作:

pi@raspberrypi:~/php-src-php-7.1.29/ext $ ./ext_skel --extname=phpPi
./ext_skel: 1: cd: can't cd to skeleton
Creating directory phpPi
Creating basic files: config.m4 config.w32 .gitignore phpPi.c./ext\_skel: 247: ./ext\_skel: cannot open /skeleton.c: No such file
 php\_phpPi.h./ext\_skel: 265: ./ext\_skel: cannot open /php\_skeleton.h: No such file
 CREDITS./ext\_skel: 269: ./ext\_skel: cannot open /CREDITS: No such file
 EXPERIMENTAL./ext\_skel: 273: ./ext\_skel: cannot open /EXPERIMENTAL: No such file
 tests/001.phpt./ext\_skel: 278: ./ext\_skel: cannot open /tests/001.phpt: No such file
 phpPi.php./ext\_skel: 282: ./ext\_skel: cannot open /skeleton.php: No such file
 \[done\].
To use your new extension, you will have to execute the following steps:
1.  $ cd ..
2.  $ vi ext/phpPi/config.m4
3.  $ ./buildconf
4.  $ ./configure --\[with|enable\]-phpPi
5.  $ make
6.  $ ./sapi/cli/php -f ext/phpPi/phpPi.php
7.  $ vi ext/phpPi/phpPi.c
8.  $ make
Repeat steps 3-6 until you are satisfied with ext/phpPi/config.m4 and
step 6 confirms that your module is compiled into PHP. Then, start writing
code and repeat the last two steps as often as necessary.
pi@raspberrypi:~/php-src-php-7.1.29/ext $

./ext_skel: 1: cd: can't cd to skeleton 错误是什么鬼???

百度了一晚上,一直没找到原因,后来我换成了php7.3版本

pi@raspberrypi:~/php-src-php-7.3.3/ext $ php ext_skel.php 
Error: No extension name passed, use "--ext <name>"
pi@raspberrypi:~/php-src-php-7.3.3/ext $ php ext_skel.php --ext phpPi
Error: The skeleton directory was not found
pi@raspberrypi:~/php-src-php-7.3.3/ext $

同样报错

Error: The skeleton directory was not found

那 skeleton是什么呢?

我查了很久很久,后来才发现,在php-src源码中,是有skeleton这个目录的,在ext目录下,还有着很多很多的扩展,而我解压的文件却没有显示:

image.png

image.png

很明显,我下载的文件有问题,我用的是wget方式下载,后来我登录其他服务器,使用其他服务器下载下来,才发现了区别:

image.png

image.png

很明显了,下载的时候,可能因为网络问题,导致文件缺失。并且解压的时候有提示,只是我那时候根本不知道:

image.png

gzip: stdin: unexpected end of file

tar: 归档文件中异常的 EOF

tar: 归档文件中异常的 EOF

tar: Error is not recoverable: exiting now

这下终于找到了原因,通过解压完整版,开始生成扩展:

image.png

成功生成扩展文件,可以愉快的写代码了

目录
相关文章
|
7月前
|
运维 Unix Linux
Linux系统 PHP安装expect扩展详解
Linux系统 PHP安装expect扩展详解
97 5
|
3月前
|
设计模式 算法 数据库连接
PHP中的设计模式:提高代码的可维护性与扩展性本文旨在探讨PHP中常见的设计模式及其应用,帮助开发者编写出更加灵活、可维护和易于扩展的代码。通过深入浅出的解释和实例演示,我们将了解如何使用设计模式解决实际开发中的问题,并提升代码质量。
在软件开发过程中,设计模式是一套经过验证的解决方案模板,用于处理常见的软件设计问题。PHP作为流行的服务器端脚本语言,也有其特定的设计模式应用。本文将重点介绍几种PHP中常用的设计模式,包括单例模式、工厂模式和策略模式,并通过实际代码示例展示它们的具体用法。同时,我们还将讨论如何在实际项目中合理选择和应用这些设计模式,以提升代码的可维护性和扩展性。
69 4
|
2月前
|
NoSQL 安全 Linux
MongoDB PHP 扩展
10月更文挑战第19天
13 0
MongoDB PHP 扩展
|
3月前
|
设计模式 存储 算法
PHP中的设计模式:策略模式的深入解析与应用在软件开发的浩瀚海洋中,PHP以其独特的魅力和强大的功能吸引了无数开发者。作为一门历史悠久且广泛应用的编程语言,PHP不仅拥有丰富的内置函数和扩展库,还支持面向对象编程(OOP),为开发者提供了灵活而强大的工具集。在PHP的众多特性中,设计模式的应用尤为引人注目,它们如同精雕细琢的宝石,镶嵌在代码的肌理之中,让程序更加优雅、高效且易于维护。今天,我们就来深入探讨PHP中使用频率颇高的一种设计模式——策略模式。
本文旨在深入探讨PHP中的策略模式,从定义到实现,再到应用场景,全面剖析其在PHP编程中的应用价值。策略模式作为一种行为型设计模式,允许在运行时根据不同情况选择不同的算法或行为,极大地提高了代码的灵活性和可维护性。通过实例分析,本文将展示如何在PHP项目中有效利用策略模式来解决实际问题,并提升代码质量。
|
4月前
|
安全 前端开发 PHP
PHP与现代Web开发:构建高效和可扩展的应用程序
【8月更文挑战第29天】在这篇文章中,我们将深入探讨PHP如何适应现代Web开发的需求。我们将通过实际案例分析,揭示PHP的核心优势,并展示如何利用这些优势来构建高性能、可扩展的Web应用。文章不仅提供理论知识,还包括具体的代码示例,旨在帮助开发者更好地理解和运用PHP解决实际问题。
|
4月前
|
SQL 关系型数据库 MySQL
PHP与数据库交互的艺术:深入探讨PDO扩展
【8月更文挑战第28天】在数字信息时代的海洋里,PHP作为一艘灵活的帆船,承载着无数网站和应用的梦想。而PDO扩展,则是这艘帆船上不可或缺的导航仪,指引着数据安全与效率的航向。本文将带你领略PHP与数据库交互的艺术,深入浅出地探索PDO的世界,从连接数据库到执行复杂的查询,每一步都清晰可见。我们将一起航行在这段奇妙的旅程上,解锁数据的奥秘,体验编程的乐趣。
71 1
|
4月前
|
存储 安全 Linux
【Azure 应用服务】App Service For Linux 怎么安装Composer,怎么安装PHP扩展,怎么来修改站点根路径启动程序?
【Azure 应用服务】App Service For Linux 怎么安装Composer,怎么安装PHP扩展,怎么来修改站点根路径启动程序?
|
5月前
|
运维 Serverless API
函数计算产品使用问题之如何使用PHP Runtime非内置扩展
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
6月前
|
Ubuntu 中间件 Linux
linux php添加扩展zip libzip ZipArchive功能
linux php添加扩展zip libzip ZipArchive功能
213 1