向PHP文件添加一行代码可防止上传到服务器

时间:2015-10-07 05:24:36

标签: php apache server

这是一个我根本想不通的问题。我在一个更大的PHP文件中有一些非常简单的代码。我无法将此文件上传到我们的客户服务器 - 它将通过FTP上传并立即再次消失。我尝试手动创建文件并粘贴代码,然后我收到500内部服务器错误。项目中的所有其他文件上传都很好。所以我开始删除这些代码并尝试上传,如果我删除了行

$temp_sub = '('; 

然后上传。如果我再次添加它,它就不会!如果我用//注释掉那行,它就不会。如果我完全删除该行并以不同的方式重写它。如果我将$ temp_sub名称更改为其他名称,则不会... 现在我不知道是什么原因引起的!任何人的想法?

感谢您的帮助:)

private function replace_table_arguments2($in_table1,$in_table2,$in_id1,$in_id2,$in_arguments,$in_query){
    // replace table arguments for col in linked table / $in_table1=original table, $in_table2=new table to join, $in_id1=id to connect the 2 tables, $in_in2=id for where arguments

    // get highest existing join
    $join_count = 0;
    while (strstr($in_query,' t'.($join_count+1).' ')){
        $join_count ++;
    }

    $return_join = '';
    $return_where = '';
    $in_list = explode('|',$in_arguments);
    foreach ($in_list as $value1){
        if ($value1){
            $temp_sub = '(';
            if (substr($value1,0,1) !== '.'){
                $join_count ++;
                $return_join .= 'inner join '.$in_table2.' t'.$join_count.' on t'.$join_count.'.'.$in_id1.'='.$in_table1.'.'.$in_id1.' ';
                $temp_sub .= 't'.$join_count.'.'.$in_id2.'="'.$value2.'" and ';
            }
            $temp_sub_list = explode(',',$value1);
            foreach ($temp_sub_list as $value2){
                if ($value2){
                    if (substr($value2,0,1) == '.') $value2 = substr($value2,1);
                    if (substr($value1,0,1) == '.'){
                        $join_count ++;
                        $return_join .= 'inner join '.$in_table2.' t'.$join_count.' on t'.$join_count.'.'.$in_id1.'='.$in_table1.'.'.$in_id1.' ';
                        $temp_sub .= 't'.$join_count.'.'.$in_id2.'="'.$value2.'" and ';
                    }
                    else{
                        $temp_sub .= 't'.$join_count.'.'.$in_id2.'="'.$value2.'" or ';
                    }
                }
            }
            if ($temp_sub == '(') $temp_sub = '';
            elseif (substr($temp_sub,-5) == ' and ') $temp_sub = substr($temp_sub,0,-5).')';
            elseif (substr($temp_sub,-4) == ' or ') $temp_sub = substr($temp_sub,0,-4).')';
        }
        if ($temp_sub) $return_where .= $temp_sub . ' and ';
    }

    if (substr($return_where,-5) == ' and ') $return_where = substr($return_where,0,-5);
    if ($return_where) $return_where = ' ('.$return_where.') ';

    return array($return_join,$return_where);
}

2 个答案:

答案 0 :(得分:1)

尝试以下方法:

$temp_sub='('; // note: removing whitespace around =
$temp_sub="(";
$temp_data="(";
$temp_data='(';

然后看它是否有效。您确定文件正在上传,即您的ftp客户端是否显示成功/错误/状态消息?

如果它正在上传,我猜它会使它变得不可读(即unix权限:000 noread / nowrite,unviewable,但实际存在。

要将此ssh验证到系统中并使用

检查文件权限
 ls -l # run inside directory where file should be

然而,这种类型的异常很奇怪,正如你现在所知道的那样,通常我发现这些奇怪的事件是由服务器设置不当的坏主机引起的,然后制定了不好的安全措施以试图绕过所有其他不良他们做的事情。

$temp_sub == '('

请注意,如果该行正常工作,某些地方触发某种模式是我的猜测,也许服务器上的某些安全问题很难知道,而且该模式正在寻找='(';

同时尝试Filezilla以确保它不是你的ftp客户端配置中的东西,这是值得怀疑的,但你永远不会知道。

答案 1 :(得分:0)

好的,问题解决了。我将php.ini改为

asp_tags = Off

现在装好了。它实际上仍然没有让我用FTP上传文件,但是我在网络主机文件管理器上创建了一个空文件,粘贴了内容并将其重命名为PHP文件,以便它正常工作。

Lizardx我认为你是对的:只是一个配置错误的服务器:)

更新:一切都工作了24小时,然后网站又开始抛出错误。 FontAwesome目录已经消失,它不允许我上传它(FileZilla说"无法启动上传")。 PHP session_start发出错误"打开失败 - 没有这样的文件或目录"。我的猜测是,它是服务器上的权限错误,网络主机(iPage)现在正在调查它。完全相同的PHP文件在许多其他系统上运行良好,所以我认为我们可以得出结论,这是一个服务器配置错误。