mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-10-26 00:36:34 +02:00
php manager issue
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
Reference in New Issue
Block a user