mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-11-02 11:26:28 +01: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);
|
$('#file_uploads').prop('checked', false);
|
||||||
$('#allow_url_include').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 queryString = window.location.search;
|
||||||
var searchParams = new URLSearchParams(queryString);
|
var searchParams = new URLSearchParams(queryString);
|
||||||
@@ -352,15 +358,19 @@ app.controller('editPHPConfig', function ($scope, $http, $timeout) {
|
|||||||
|
|
||||||
if (response.data.allow_url_fopen === "1") {
|
if (response.data.allow_url_fopen === "1") {
|
||||||
$('#allow_url_fopen').prop('checked', true);
|
$('#allow_url_fopen').prop('checked', true);
|
||||||
|
allow_url_fopen = true;
|
||||||
}
|
}
|
||||||
if (response.data.display_errors === "1") {
|
if (response.data.display_errors === "1") {
|
||||||
$('#display_errors').prop('checked', true);
|
$('#display_errors').prop('checked', true);
|
||||||
|
display_errors = true;
|
||||||
}
|
}
|
||||||
if (response.data.file_uploads === "1") {
|
if (response.data.file_uploads === "1") {
|
||||||
$('#file_uploads').prop('checked', true);
|
$('#file_uploads').prop('checked', true);
|
||||||
|
file_uploads = true;
|
||||||
}
|
}
|
||||||
if (response.data.allow_url_include === "1") {
|
if (response.data.allow_url_include === "1") {
|
||||||
$('#allow_url_include').prop('checked', true);
|
$('#allow_url_include').prop('checked', true);
|
||||||
|
allow_url_include = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.loadingPHP = 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