这是一个我根本想不通的问题。我在一个更大的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);
}
答案 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)
asp_tags = Off
现在装好了。它实际上仍然没有让我用FTP上传文件,但是我在网络主机文件管理器上创建了一个空文件,粘贴了内容并将其重命名为PHP文件,以便它正常工作。
Lizardx我认为你是对的:只是一个配置错误的服务器:)
更新:一切都工作了24小时,然后网站又开始抛出错误。 FontAwesome目录已经消失,它不允许我上传它(FileZilla说"无法启动上传")。 PHP session_start发出错误"打开失败 - 没有这样的文件或目录"。我的猜测是,它是服务器上的权限错误,网络主机(iPage)现在正在调查它。完全相同的PHP文件在许多其他系统上运行良好,所以我认为我们可以得出结论,这是一个服务器配置错误。