编写htaccess文件的脚本添加幻像未知字符导致500错误

时间:2015-06-24 13:42:31

标签: php apache .htaccess

我正在编写一个小部件,允许管理员从管理中管理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";

我不确定从哪里开始......非常感谢任何帮助。

皮特

1 个答案:

答案 0 :(得分:0)

问题解决:

虽然我很高兴了解PHP_EOL并确实对整个脚本进行了更改......但它并没有解决问题。代码是正确的。问题出在我测试的IP地址中,并在问题中显示。

在IP地址中没有完全达到速度我认为任何逗号分隔的4位数都可以用于测试......显然不是。我将测试IP更改为已知IP并且脚本运行正常。

虽然这是一个简单的解决方案,我认为值得分享。

感谢所有的投入......非常感谢

皮特