diff --git a/managePHP/static/managePHP/managePHP.js b/managePHP/static/managePHP/managePHP.js index cb0ccd647..541f4405c 100644 --- a/managePHP/static/managePHP/managePHP.js +++ b/managePHP/static/managePHP/managePHP.js @@ -316,6 +316,12 @@ app.controller('editPHPConfig', function ($scope, $http, $timeout) { $('#file_uploads').prop('checked', false); $('#allow_url_include').prop('checked', false); + // Reset variables + allow_url_fopen = false; + display_errors = false; + file_uploads = false; + allow_url_include = false; + var queryString = window.location.search; var searchParams = new URLSearchParams(queryString); @@ -352,15 +358,19 @@ app.controller('editPHPConfig', function ($scope, $http, $timeout) { if (response.data.allow_url_fopen === "1") { $('#allow_url_fopen').prop('checked', true); + allow_url_fopen = true; } if (response.data.display_errors === "1") { $('#display_errors').prop('checked', true); + display_errors = true; } if (response.data.file_uploads === "1") { $('#file_uploads').prop('checked', true); + file_uploads = true; } if (response.data.allow_url_include === "1") { $('#allow_url_include').prop('checked', true); + allow_url_include = true; } $scope.loadingPHP = true; diff --git a/test_php_config_fix.py b/test_php_config_fix.py deleted file mode 100644 index d11dd0fc1..000000000 --- a/test_php_config_fix.py +++ /dev/null @@ -1,204 +0,0 @@ -#!/usr/bin/env python3 - -""" -Test script to verify that the PHP configuration fix works correctly. -This script simulates the PHP config editing process and checks that all settings are preserved. -""" - -import os -import tempfile -import shutil - -# Simulate the fixed savePHPConfigBasic function logic -def test_save_php_config(): - # Create a sample PHP configuration file without file_uploads directive - sample_config = """ -; PHP Configuration File -[PHP] - -engine = On -short_open_tag = Off -precision = 14 -output_buffering = 4096 -zlib.output_compression = Off -implicit_flush = Off -unserialize_callback_func = -serialize_precision = -1 -disable_functions = -disable_classes = -zend.enable_gc = On -expose_php = On -max_execution_time = 30 -max_input_time = 60 -memory_limit = 128M -error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT -display_errors = Off -display_startup_errors = Off -log_errors = On -ignore_repeated_errors = Off -ignore_repeated_source = Off -report_memleaks = On -track_errors = Off -html_errors = On -variables_order = "GPCS" -request_order = "GP" -register_argc_argv = Off -auto_globals_jit = On -post_max_size = 8M -auto_prepend_file = -auto_append_file = -default_mimetype = "text/html" -default_charset = "UTF-8" -doc_root = -user_dir = -enable_dl = Off -cgi.fix_pathinfo = 1 -file_uploads = On -upload_max_filesize = 2M -max_file_uploads = 20 -allow_url_fopen = On -allow_url_include = Off -default_socket_timeout = 60 -""" - - # Test parameters (simulating what would be passed from the web interface) - test_params = { - 'allow_url_fopen': 'allow_url_fopen = On', - 'display_errors': 'display_errors = On', # Changed from Off to On - 'file_uploads': 'file_uploads = On', # This should be preserved - 'allow_url_include': 'allow_url_include = Off', - 'memory_limit': '256M', # Changed from 128M - 'max_execution_time': '60', # Changed from 30 - 'upload_max_filesize': '10M', # Changed from 2M - 'max_input_time': '120', # Changed from 60 - 'post_max_size': '16M' # Changed from 8M - } - - # Create temporary file for testing - with tempfile.NamedTemporaryFile(mode='w', delete=False, suffix='.ini') as temp_file: - temp_file.write(sample_config) - temp_path = temp_file.name - - try: - # Simulate the fixed logic - with open(temp_path, 'r') as f: - data = f.readlines() - - with open(temp_path, 'w') as writeToFile: - # Track which directives we've found and replaced - found_directives = { - 'allow_url_fopen': False, - 'display_errors': False, - 'file_uploads': False, - 'allow_url_include': False, - 'memory_limit': False, - 'max_execution_time': False, - 'upload_max_filesize': False, - 'max_input_time': False, - 'post_max_size': False - } - - for items in data: - if items.find("allow_url_fopen") > -1 and items.find("=") > -1: - writeToFile.writelines(test_params['allow_url_fopen'] + "\n") - found_directives['allow_url_fopen'] = True - elif items.find("display_errors") > -1 and items.find("=") > -1: - writeToFile.writelines(test_params['display_errors'] + "\n") - found_directives['display_errors'] = True - elif items.find("file_uploads") > -1 and items.find("=") > -1 and not items.find("max_file_uploads") > -1: - writeToFile.writelines(test_params['file_uploads'] + "\n") - found_directives['file_uploads'] = True - elif items.find("allow_url_include") > -1 and items.find("=") > -1: - writeToFile.writelines(test_params['allow_url_include'] + "\n") - found_directives['allow_url_include'] = True - elif items.find("memory_limit") > -1 and items.find("=") > -1: - writeToFile.writelines("memory_limit = " + test_params['memory_limit'] + "\n") - found_directives['memory_limit'] = True - elif items.find("max_execution_time") > -1 and items.find("=") > -1: - writeToFile.writelines("max_execution_time = " + test_params['max_execution_time'] + "\n") - found_directives['max_execution_time'] = True - elif items.find("upload_max_filesize") > -1 and items.find("=") > -1: - writeToFile.writelines("upload_max_filesize = " + test_params['upload_max_filesize'] + "\n") - found_directives['upload_max_filesize'] = True - elif items.find("max_input_time") > -1 and items.find("=") > -1: - writeToFile.writelines("max_input_time = " + test_params['max_input_time'] + "\n") - found_directives['max_input_time'] = True - elif items.find("post_max_size") > -1 and items.find("=") > -1: - writeToFile.writelines("post_max_size = " + test_params['post_max_size'] + "\n") - found_directives['post_max_size'] = True - else: - writeToFile.writelines(items) - - # Add any missing directives at the end of the file - missing_directives = [] - if not found_directives['allow_url_fopen']: - missing_directives.append(test_params['allow_url_fopen']) - if not found_directives['display_errors']: - missing_directives.append(test_params['display_errors']) - if not found_directives['file_uploads']: - missing_directives.append(test_params['file_uploads']) - if not found_directives['allow_url_include']: - missing_directives.append(test_params['allow_url_include']) - if not found_directives['memory_limit']: - missing_directives.append("memory_limit = " + test_params['memory_limit']) - if not found_directives['max_execution_time']: - missing_directives.append("max_execution_time = " + test_params['max_execution_time']) - if not found_directives['upload_max_filesize']: - missing_directives.append("upload_max_filesize = " + test_params['upload_max_filesize']) - if not found_directives['max_input_time']: - missing_directives.append("max_input_time = " + test_params['max_input_time']) - if not found_directives['post_max_size']: - missing_directives.append("post_max_size = " + test_params['post_max_size']) - - if missing_directives: - writeToFile.writelines("\n; Added by CyberPanel PHP Config Manager\n") - for directive in missing_directives: - writeToFile.writelines(directive + "\n") - - # Read the result and verify - with open(temp_path, 'r') as f: - result = f.read() - - print("=== TEST RESULTS ===") - - # Check that all settings are present - checks = [ - ('file_uploads = On', 'file_uploads setting'), - ('display_errors = On', 'display_errors setting'), - ('memory_limit = 256M', 'memory_limit setting'), - ('max_execution_time = 60', 'max_execution_time setting'), - ('upload_max_filesize = 10M', 'upload_max_filesize setting'), - ('max_input_time = 120', 'max_input_time setting'), - ('post_max_size = 16M', 'post_max_size setting'), - ] - - all_passed = True - for check_value, description in checks: - if check_value in result: - print(f"✓ PASS: {description} found") - else: - print(f"✗ FAIL: {description} NOT found") - all_passed = False - - # Check that the comment was added for missing directives (if any) - if "; Added by CyberPanel PHP Config Manager" in result: - print("✓ PASS: Missing directives section added") - else: - print("✓ PASS: No missing directives needed (all were already present)") - - print("\n=== FINAL RESULT ===") - if all_passed: - print("🎉 SUCCESS: All PHP configuration settings are properly handled!") - return True - else: - print("❌ FAILURE: Some settings were not properly handled") - return False - - finally: - # Clean up - if os.path.exists(temp_path): - os.unlink(temp_path) - -if __name__ == "__main__": - success = test_save_php_config() - exit(0 if success else 1)