Я пишу виджет, который позволяет администратору управлять htaccess file
из администрирования. Сценарий добавляет фантомный символ, отображаемый как пространство в генерируемом htaccess code
, который выдает ошибку 500.
# block/allow users by ip if(!empty($block_ips) || !empty($allowed_ips)){ $htaccess_code .= "#Block-Allow users by IP \r\n"; $htaccess_code .= "order allow,deny \r\n"; } if(!empty($block_ips)){ $the_ips = explode(',',$block_ips); foreach($the_ips as $the_ip){ $htaccess_code .= "deny from ".trim($the_ip)." \r\n"; } } if(!empty($allowed_ips)){ $the_ips = explode(',',$allowed_ips); foreach($the_ips as $the_ip){ $htaccess_code .= "allow from ".trim($the_ip)." \r\n"; } } $htaccess_code .= "allow from all \r\n"; $htaccess_code .= " \r\n";
#Block-Allow users by IP order allow,deny deny from 000.000.111.111 deny from 444.444.555.555 allow from 444.433.555.555 allow from 010.000.111.111 allow from all
В конце каждой строки есть символ пространства / фантома. Если во время ошибки 500 я удаляю редактирование пространства в прямом эфире через FTP и сохраняю htaccess file
а затем обновляю всю страницу.
Если я удалю пробел в коде, как показано ниже, а затем запустите код, произойдет ошибка 500.
# block/allow users by ip if(!empty($block_ips) || !empty($allowed_ips)){ $htaccess_code .= "#Block-Allow users by IP\r\n"; $htaccess_code .= "order allow,deny\r\n"; } if(!empty($block_ips)){ $the_ips = explode(',',$block_ips); foreach($the_ips as $the_ip){ $htaccess_code .= "deny from ".trim($the_ip)."\r\n"; } } if(!empty($allowed_ips)){ $the_ips = explode(',',$allowed_ips); foreach($the_ips as $the_ip){ $htaccess_code .= "allow from ".trim($the_ip)."\r\n"; } } $htaccess_code .= "allow from all\r\n"; $htaccess_code .= "\r\n";
Я не уверен, куда идти отсюда … любая помощь была бы весьма признательна.
Пит