• PHP Manual
  • Function Reference
  • Affecting PHP's Behaviour
  • bcompiler
  • bcompiler Functions
  • bcompiler_load_exe
  • bcompiler_load
  • bcompiler_parse_class
  • bcompiler_read
  • bcompiler_write_class
  • bcompiler_write_constant
  • bcompiler_write_exe_footer
  • bcompiler_write_file
  • bcompiler_write_footer
  • bcompiler_write_function
  • bcompiler_write_functions_from_file
  • bcompiler_write_header
  • bcompiler_write_included_filename
bcompiler_write_constant
bcompiler_write_file
bcompiler Functions
PHP Manual

bcompiler_write_exe_footer

Writes the start pos, and sig to the end of a exe type file

Description

bool bcompiler_write_exe_footer ( resource $filehandle , int $startpos )

An EXE (or self executable) file consists of 3 parts:

  • The stub (executable code, e.g. a compiled C program) that loads PHP interpreter, bcompiler extension, stored Bytecodes and initiates a call for the specified function (e.g. main) or class method (e.g. main::main)
  • The Bytecodes (uncompressed only for the moment)
  • The bcompiler EXE footer

To obtain a suitable stub you can compile php_embed-based stub phpe.c located in the examples/embed directory on bcompiler's CVS.

Parameters

filehandle

A file handle as returned by fopen.

startpos

The file position at which the Bytecodes start, and can be obtained using ftell.

Return Values

Returns TRUE on success or FALSE on failure.

Examples

Example #1 bcompiler_write_exe_footer example

<?php

/* creating the output file (example.exe) */
$fh = fopen("example.exe", "w");

/* 1) writing a stub (phpe.exe) */
$size = filesize("phpe.exe");
$fr = fopen("phpe.exe", "r");
fwrite($fh, fread($fr, $size), $size);
$startpos = ftell($fh);

/* 2) writing bytecodes */
bcompiler_write_header($fh);
bcompiler_write_class($fh, "myclass");
bcompiler_write_function($fh, "main");
bcompiler_write_footer($fh);

/* 3) writing EXE footer */
bcompiler_write_exe_footer($fh, $startpos);

/* closing the output file */
fclose($fh);
?>

Notes

Warning

This function is EXPERIMENTAL. The behaviour of this function, its name, and surrounding documentation may change without notice in a future release of PHP. This function should be used at your own risk.

See Also

  • bcompiler_write_header
  • bcompiler_write_class
  • bcompiler_write_footer