Deploying Encoded PHP files with NuSphere PhpExpress
Overview of NuSphere PhpExpress
PHP files encoded with NuSphere Nu-Coder require special loader present in PHP interpreter. PhpExpress is NuSphere Free PHP loader and accelerator that provides support for encoded files and also speeds up the execution of regular PHP files.
PhpExress extensions for all operating systems can be found in the folder "loader" of your Nu-Coder installation.
PhpExpress can be downloaded from NuSphere website and distributed Free Of Charge without limitations. Every Nu-Coder installation also comes with PhpExpress. This is how PhpExpress works:
- When PHP interpreter executes any PHP script it first compiles the script into bytecodes. However Nu-Coder produces PHP files that have been already compiled into bytecodes.
- PhpExpress loads encoded PHP scripts directly into PHP engine saving time and boosting performance of PHP interpretor
- PhpExpress checks for license file if required - either via API call in the script to pelm_is_licensed() function (described later in this manual) or -licfile encoding option
- PhpExpress also implements caching for PHP engine and accelerates execution process even if PHP Script is not encoded
How to deploy NuSphere PhpExpress
NuSphere PhpExpress is a regular PHP extension, which makes it easy to install and deploy. To install PhpExpress:
Once PhpExpress is installed on the server, you can execute PHP Scripts encoded with Nu-Coder as well as regular, not encoded PHP scripts. In both cases you will gain an improved performance in the execution of the scripts.
- Open php.ini file for editing
- Add line
if you are deploying on Windows,
if you are deploying on Unix, Linux or Mac OS operating systems
- Copy phpexpress-php-x.x.dll or phpexpress-php-x.x.so in the PHP extensions directory specified in php.ini file
- Stop and Start Apache if you are running PHP as Apache module
- Execute call to phpinfo() function and make sure that PhpExpress is properly installed
How to use PhpExpress's API with Nu-Coder
PhpExpress provides a number of PHP Functions useful when encoding PHP files with and without Nu-Coder's License Manager.
The following functions are likely to be used by the users deploying files encoded with PHP Enoder:
shows phpexpress info page.
returns the list of host IDs that identify server hardware.
Note: all host IDs are shown on the PhpExpress info page. It's recommended to use ALL host IDs that are found on the system. It will make license less sensitive to the hardware changes.
The following functions are likely to be used by PHP developers deploying their PHP applications encoded by Nu-Coder:
returns true if caller script is protected with license
bool pelm_load_license(string filename)
loads license and returns true if file is found.
Note: if relative path name is specified, PhpExpress will use include_path php setting to find the file. For further details about include_path see php manual.
returns license filename that is applied to the caller script. It returns false if no license is used.
string pelm_get_attribute(string attr_name)
reads attribute value from the license applied to the caller script. It returns false if no license is used.
void pe_handle_error($errcode, $errmessage, $licfilename)
gets called if the license is not found, expired or not valid for any other reason.
Possible error codes are:
PE_ERR_NO_LIC - no licenses found
PE_ERR_NO_VALID_LIC - the license is found but it is not applicable for this application
PE_ERR_EXPIRED_LIC - license is expired
PE_ERR_HOST_MISMATCH_LIC - license doesn't match the host (by IP or HTTP host)
PE_ERR_HW_MISMATCH_LIC - license is generated for a different hostid
How to monitor PHP Cache implemented by NuSphere PhpExpress
PhpExpress accelerates execution of PHP scripts by caching them and avoiding unnecessary compilation. You can view and control PHP Cache created by PhpExpress with a single function call to the PHP function phpexpress() provided by PhpExpress PHP extension. phpexpress() produces the output similar to phpinfo() with the user Interface to administer PhpExpress cache. The output of phpexpress() is illustrated here:
Please note that PHP caching is only enabled when PHP is running as an extension of the Web Server - dll on windows or shared object on Linux/Unix/Mac Operating Systems. Caching of PHP scripts when PHP is running in CGI mode is not useful and therefore disabled.
How to load license
PHP scripts protected by the license will only run if the corresponding valid license file is loaded. You can load the License in one of the following ways:
Please note that if the relative path to the file is used, the system will search for the file in all directories listed in include_path.
- Load license in php.ini file using the instruction:
phpexpress.add_license = license1.txt, license2.txt
- This instruction is applicable to each virtual host, therefore different virtual hosts can use different licenses.
- Load license in .htdocs file using the instruction (will only work with php module of Apache):
php_value phpexpress.add_license "license3.txt"
- In a file not protected by the license call the function pelm_load_license("license4.txt"). While the file containing this call can not be license protected it can still be encoded. pelm_load_license() function is a part of PhpExpress API
- Specify the name of the license file at the time of the encoding. For example:
This name can also be entered using EncoderGUI Settings->Protection->Autoload license in Protection Tab
nu-coder -k longkeyword --licfile lic5.txt file1.php ../encoded/file1.php
How to handle expired or invalid license
If the license used for encryption of PHP files is not found or has expired or became invalid in any way, the system will attempt to call the function pe_handle_error($errcode, $errmessage, $licfilename).
To handle the error of invalid license you should implement this function in a file not protected with the license, so it could be executed in this case and provide suitable information to the user (e.g. “Your Trial has Expired”). For example, you can encode error handler with the following parameters:
Note: For these and other API functions used to work with License Manager please see this section.