将PHP文件转换为二进制文件
是否可以将PHP文件转换为二进制文件并将其部署到Web服务器上?由于PHP是一种(相对)可移植的语言,因此将PHP源代码编译为字节码而不是二进制代码更为可取。为此,有一个实验项目叫做 这取决于你所说的“二进制”是什么意思 如果您想编译(或只是混淆)您的PHP代码以防止其他人修改,那么请使用字节码编译器。其中一个例子是来自的工具。(我更喜欢Zend的工具,因为它们是PHP背后的主要公司,并针对PHP的所有版本对其所有工具进行全面的QA)将PHP文件转换为二进制文件,php,binary,Php,Binary,是否可以将PHP文件转换为二进制文件并将其部署到Web服务器上?由于PHP是一种(相对)可移植的语言,因此将PHP源代码编译为字节码而不是二进制代码更为可取。为此,有一个实验项目叫做 这取决于你所说的“二进制”是什么意思 如果您想编译(或只是混淆)您的PHP代码以防止其他人修改,那么请使用字节码编译器。其中一个例子是来自的工具。(我更喜欢Zend的工具,因为它们是PHP背后的主要公司,并针对PHP的所有版本对其所有工具进行全面的QA) 如果您想编译PHP代码,并将PHP运行时链接到它,然后部署它
如果您想编译PHP代码,并将PHP运行时链接到它,然后部署它(如C\C++),那么就不需要了。理论上这可能是可行的,但会很混乱。(不实用或不可行,也不认为任何人已经将任何东西放在一起尝试,输出也将与特定的体系结构相关联)。如果web服务器基于Linux,您可以创建一个类似或的包(取决于Linux发行版)并轻松分发/部署它 比尔,
Dawid。几个月前,我搜索了它(php代码保护或脚本保护),结果是: 我提供了一些描述,但试图谷歌他们,原谅我 搜索时要小心,因为您可能会遇到php压缩器,而压缩器只是关于
GZIP
和其他http传输压缩机制
php脚本保护工具最重要的问题是:
visualc++
和MSVS
来混淆php的方法,而且因为我有asp.net
的经验,所以我测试了它,但没有效果
转换器和储物柜
- 离子保护者:哦,不是免费的,但我听说过很多关于他的名字
- phc(php编译器):免费,这是一个很好的例子,但“Brendan Long”说了实话,因为phc的安装方式很痛苦。然而,结果是神奇的,并有著名的名字,如离子
- php locker:我得到了它并进行了测试。它在编译代码时出错,并且发布的版本低于php5。绝对不是免费的,对于那些想到ccr ac*ks的人来说,为php locker找到它是不可能的
- Zend Guard:一种完美的保护方式,但比phc或ion更难,因为您的服务器上需要Zend运行时环境(ZRE),而Zend Guard是绝对不免费的,但是如果您是Zend guy(Zend framework+Zend IDE+Zend Guard)您应该知道ZendGuard与ZendIDE兼容,代码阻塞过程将非常简单。我不是Zend人,因为Zend框架和Zend guard都明显降低了运行速度。我喜欢php加速运行时
(是的,这是可能的)(世界上最好的性能):它不是那么有名,所以如果没有人谈论它,这是正常的php->C/C++编译
- facebook hiphop:facebook使用此工具在c++/c上编译php文件,以获得更好的性能,但最终我们得到了无法读取的编译代码。我不记得了,但我认为它需要非常熟悉linux或
上的php重新编译机制。(但是,不要相信我的内存不足和google it)(要了解PHP重新编译方式,请参阅最新版本的PHP_manual.chm)MicrosoftVisualC++
OpenSSL
和不同的加密机制,并对php安全开发进行了回顾
祝你成功。这太晚了,但你应该做你想做的事
在ZEngine引擎编译到C++ DLL时,自己制作自定义扩展。将该dll添加到php目录中的ext位置。之后,您可以将自己的php脚本作为php函数调用。请记住,php只是服务器端,因此,除非从服务器复制并分发脚本,否则没有人可以获取脚本
下载您拥有的版本的php源代码库。[windows.php.net]将包括您需要的zend内容 第一步。创建一个新项目并在VisualC++中选择“一般”和“空项目”选项。 给它一个名称,然后单击“确定”。我的是Project1,所以我将使用它 第二步。在解决方案名称上单击鼠标右键,然后选择“属性”。在配置属性/常规项的项目默认值/配置类型下选择动态库(.dll)。确保在未使用版本时更改调试配置 第三步。在VC++目录下,在包含库下添加以下内容: C:\php-7.1.8-src\Zend C:\php-7.1.8-src\win32 C:\php-7.1.8-src\TSRM C:\php-7.1.8-src\main C:\php-7.1.8-src 图书馆: C:\php-7.1.8\dev 第四步。在C/C++预处理器下添加ZEND_DEBUG=0;ZTS=1;ZEND_WIN32;PHP_WIN32到预处理器定义 第五步。在链接器输入下添加php7ts.lib。这需要与php版本的库相匹配 单击“确定”保存解决方案的属性设置 现在让我们为您的函数(Project1)添加一个代码文件 在“源文件”文件夹下,右键单击并添加代码。我调用了我的Project1.cpp,这里是源代码。您需要将config.w32.h.in重命名为config.w32.h,并将其复制到需要的目录中。Intellisense应该告诉您它的位置并配置.w// this needs to match the compiler version that php was compiled with
#define _CRT_SECURE_NO_WARNINGS
#define PHP_COMPILER_ID "VC14"
#pragma once
/* You must include config.w32.h first */
#include "win32/config.w32.h"
#include "php.h"
ZEND_FUNCTION(ReturnString);
zend_function_entry Project1_functions[] =
{
ZEND_FE(ReturnString, NULL)
{
NULL, NULL, NULL
}
};
zend_module_entry Project1_module_entry =
{
STANDARD_MODULE_HEADER,
"Project1 Module",
Project1_functions,
NULL, NULL, NULL, NULL, NULL,
NO_VERSION_YET, STANDARD_MODULE_PROPERTIES
};
ZEND_GET_MODULE(Project1)
ZEND_FUNCTION(ReturnString)
{
zval* value;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &value) == FAILURE)
{
RETURN_FALSE;
}
convert_to_string(value);
RETURN_STRING(Z_STRVAL_P(value), true);
}
The script is quite simple:
<?php
echo ReturnString("The Returning String");
?>