Laravel wrapper for php-py package package, to Seamless enabling secure and efficient execution of Python scripts within Laravel applications without spread multiple applications and or setup API.
- π§ Requirements
- π Installation
- π Quick Start
- β¨ Features
- π Changelog
- π§ͺ Testing
- π Security
- π€ Contributors
- π License
- PHP 8.1+ .
- python3 must be installed in server .
You can install the package via Composer:
composer require omaralalwi/laravel-py
php artisan vendor:publish --tag=laravel-py
- π Create a folder for scripts, e.g.,
phpPyScripts
in your project root directory. - π Create a Python script file (
.py
extension) and write Python code. See this script examples. - π§ make script file executable,
chmod +x script_file_path
.
<?php
use LaravelPy;
class LaravelPyController
{
public function testLaravelPy() {
$laravelPy = app(LaravelPy::class);
$script = 'total_calculator.py';
$arguments = [10, 20, 30];
try {
$result = $laravelPy
->loadScript($script)
->withArguments($arguments)
->run();
print_r($result); // 60.0
} catch (Exception $e) {
echo "Error: " . $e->getMessage();
}
}
}
<?php
use LaravelPy;
use Omaralalwi\PhpPy\Managers\ConfigManager;
class LaravelPyController
{
public function testLaravelPy()
{
try {
$laravelPy = app(LaravelPy::class);
$script = 'advance_example.py';
$numbers = [2,4, 5,7,9];
$config = new ConfigManager([
'scripts_directory' => 'phpPyScripts',
'python_executable' => '/usr/bin/python3',
'max_timeout' => 120,
]);
$result = $laravelPy
->setConfig($config)
->loadScript($script)
->withArguments($numbers)
->withEnvironment(['FIRST_ENV_VAR' => 10, 'SECOND_ENV_VAR' => 'second var value'])
->timeout(60)
->asJson()
->run();
print_r(json_encode($result));
} catch (\Exception $e) {
print_r("Error: " . $e->getMessage());
}
}
}
- Path Validation β Ensures scripts are within allowed directories.
- Argument & Environment Validation π Restricts unauthorized input.
- Timeout Control β³ Prevents long-running scripts.
- black list for these vars
PATH,PYTHONPATH,LD_LIBRARY_PATH,LD_PRELOAD,PYTHONHOME
, can not passed . - Uses
proc_open
as an alternative toshell_exec
.
- Centralized settings via
ConfigManager
. - Customizable execution parameters.
- Supports JSON parsing.
- Captures and reports script errors.
- Detailed exception handling for debugging.
- Standardized error reporting.
- Modular execution through
CommandExecutor
. - Customizable for advanced use cases.
β Never pass user-controlled input directly script, just pass scripts that you will need as a administrator (Just from Your side) .
See detailed release notes in CHANGELOG.md π
./vendor/bin/pest
Report Vulnerabilities: Contact omaralwi2010@gmail.com π©
A huge thank you to these amazing people who have contributed to this project! ππ
Omar AlAlwi π Creator |
Want to contribute? Check out the contributing guidelines and submit a pull request! π
This package is open-source software licensed under the MIT License. π