首页 > 编程语言 >rust写php扩展

rust写php扩展

时间:2024-10-29 11:35:37浏览次数:4  
标签:name lib rs 扩展 module ext php rust

php版本必须>=8.0

文档地址 https://docs.rs/ext-php-rs/0.12.0/ext_php_rs/index.html

创建lib项目

cargo new ext_php_rs --lib
cd ext_php_rs 

编辑toml

[dependencies]
ext-php-rs = "0.12"
[lib]
crate-type = ["cdylib"]

编辑lib.rs 这里直接用的官网示例。

#![cfg_attr(windows, feature(abi_vectorcall))]

use ext_php_rs::prelude::*;

/// Gives you a nice greeting!
/// /// 
/// /// @param string $name Your name.
/// /// 
/// /// @return string Nice greeting!
#[php_function]
pub fn hello_world(name: String) -> String {
    format!("Hello, {}!", name)
}
///
///     // Required to register the extension with PHP.
#[php_module]
pub fn module(module: ModuleBuilder) -> ModuleBuilder {
      module
}

linux需要安装扩展

apt-get install libclang-dev

开始编译

cargo build --release

查看php的扩展目录

 php -i | grep extension_dir

复制so到扩展目录,我的是 /usr/lib/php/20230831

cp target/release/libext_php_rs.so /usr/lib/php/20230831

修改ini

extension=libphp-scrypt.so

测试

php -r "var_dump(hello_world("David"));" // string(13) "Hello, David!"

别人写的加密扩展项目,还是很简单的 https://github.com/appwrite/php-scrypt/tree/main

标签:name,lib,rs,扩展,module,ext,php,rust
From: https://www.cnblogs.com/qcy-blog/p/18512618

相关文章

  • Thinkphp-Laravel框架实战开发之vue校园检修系统_u7q4i
    目录课题介绍具体实现截图课程项目技术路线thinkphp框架解析框架介绍开发技术介绍PHP核心代码部分展示代码流程执行分析详细视频演示源码获取课题介绍现有的相关检修系统虽然在一定程度上解决了相关的检修问题,但是在方面还是做的不够完善,所以进行校园检修系统的开发......
  • rust+tikio实现websocket
    toml[dependencies]libc="0.2.98"tokio={version="1.8.1",features=["sync","time","rt-multi-thread","macros"]}tokio-tungstenite="0.15.0"tungstenite="0.14.0"futu......
  • rust中ref及引用的使用
    由C++指针和引用引发的思考#include<iostream>usingnamespacestd;voidc1(inta){a=6;}voidc2(int*a){*a=7;}voidc3(int&a){a=8;}intmain(){inta=5;printf("ais%d\n",a);c1(a);printf("ai......
  • Rust整合Elasticsearch
    Elasticsearch是什么Lucene:Java实现的搜索引擎类库易扩展高性能仅限Java开发不支持水平扩展Elasticsearch:基于Lucene开发的分布式搜索和分析引擎支持分布式、水平扩展提高RestfulAPI,可被任何语言调用ElasticStack是什么ELK(ElasticStack):Elasticsearch结合Kibana、Log......
  • C语言和Rust在安全性特性上的区别
    #C语言和Rust在安全性特性上的区别在探讨C语言和Rust在安全性特性上的区别时,我们可以明确地指出几个核心观点:Rust提供了内存安全保证、并发安全、以及错误处理机制,这些特性在编译时就能够避免许多常见的错误类型,显著提高了软件的安全性和可靠性。其中,内存安全保证是Rust最为突......
  • 使用php解析企业微信消息wxwork_finance_sdk扩展安装
    安装参考如果你是用docker环境,请查看GitHub-oh-stone/wework-chatdata-sdk:微信SDK打包非docker环境安装:GitHub-pangdahua/php7-wxwork-finance-sdk:PHP企业微信会话存档扩展liunx为php7.4安装wxwork_finance_sdk扩展1.例如我们使用宝塔环境,php安装路径为:/www/......
  • Rust 基础语法与常用特性
    Rust跨界:全面掌握跨平台应用开发第一章:快速上手Rust1.2基础语法与常用特性1.2.1数据类型与控制流数据类型Rust提供了丰富的内置数据类型,主要分为标量类型和复合类型。标量类型标量类型表示单一的值,Rust中的标量类型包括:整数类型:Rust提供了多种整数类型,分为有符......
  • Rust 跨平台应用开发第一章:快速上手 Rust——实用示例
    1.3实用示例在这一节中,我们将通过一系列实用的示例来帮助您更好地理解Rust的特性,并展示如何在实际项目中使用这些特性。示例将涵盖文件操作、网络请求、并发编程、命令行工具以及使用Cargo管理依赖等多个方面。1.3.1文件操作示例Rust提供了强大的标准库来进行文件操......
  • 如何利用vue和php做前后端分离开发
    使用Vue.js配合PHP进行前后端分离开发要着重关注几点关键性的事项:1、API设计原则、2、Vue.js在前端的搭建与实现、3、PHP后端的构建与优化、4、前后端数据交互格式和通信机制、5、安全性措施、6、性能调优等方面。在这些要点中,API设计原则是确保前后端能够顺畅协作的基础,应该优先......
  • 为什么很多公司弃用 PHP 使用 Java
    在当前的企业技术选型中,企业规模、性能需求、开发生态、维护与安全性等都是导致公司从PHP转向Java的重要因素。首先,Java在处理大规模数据和高并发的企业应用方面显得更为强大。Java的性能经过多年优化,尤其是在虚拟机技术及JIT编译技术的助力下,能够有效处理大量事务。其次,公司可能......