Php 发布上载名称包含撇号的文件
尝试上载名称包含撇号的文件时 例如“123'456.jpg” 服务器返回此错误: 内部服务器错误 服务器遇到内部错误或配置错误,无法完成>您的请求 请联系网站管理员@****.com上的服务器管理员,通知他们发生此错误的时间>以及您在发生此错误之前执行的操作 有关此错误的详细信息,请参阅服务器错误日志 此外,尝试使用ErrorDocument>处理请求时遇到404 Not Found错误 我使用的名称为“test.PHP”的PHP文件(其中没有PHP代码):Php 发布上载名称包含撇号的文件,php,file,Php,File,尝试上载名称包含撇号的文件时 例如“123'456.jpg” 服务器返回此错误: 内部服务器错误 服务器遇到内部错误或配置错误,无法完成>您的请求 请联系网站管理员@****.com上的服务器管理员,通知他们发生此错误的时间>以及您在发生此错误之前执行的操作 有关此错误的详细信息,请参阅服务器错误日志 此外,尝试使用ErrorDocument>处理请求时遇到404 Not Found错误 我使用的名称为“test.PHP”的PHP文件(其中没有PHP代码): 我如何解决这个问题 PS:此问题
我如何解决这个问题
PS:此问题仅出现在web主机服务器上,但
不会出现在我的本地主机服务器(xampp)上。您的主机/服务器已激活“mod_security”(修改安全性),默认情况下将阻止该文件。
请尝试联系他们以禁用此功能。我也遇到类似问题。我使用了一个函数来验证输入,它为我纠正了它 我用过:
function validateInput($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
然后使用:
$file_name = validateInput($_FILES['file']);
我希望这对你有用:)
还刚刚注意到:
在这里:
在=和名称之间有一个空格我只看到html部分。。。其中是处理表单(并复制文件)的php部分。错误日志怎么说?对包含名称的变量进行转义。@giorgio没有php代码,它是空的。这个错误没有PHP代码(在它到达PHP代码之前),请在editI加上它(有人投了反对票)后查看我的答案,因为我认为这是一个非常可能的问题。但是:poster,请从apache错误日志中检索错误,这应该会给你答案。对我来说,禁用mod_security之类的东西不是个好主意?!即使我没有尝试查看它是否工作,然后不上传带撇号的文件,甚至没有到达PHP代码。错误在PHP代码开始之前出现。正确,在向您发布答案之前,最好先了解所有事实,这会让我的答案现在看起来很愚蠢:/-您的服务器上打开了PHP吗?尝试更改您的html表单以获得“而不是因为名字中的‘因为’会导致它结束那句话。还有,你是否因为最初没有提供足够的信息而否决了我,从而得到了错误的回答?”?糟糕的形式,尤其是当我试图帮助你的时候。我按照你说的做了HTML,但什么也没发生。我不是那个投票反对你的人,我不能投票反对我是新来的user@user3398690你说HTML什么都没发生是什么意思?你拿出了所有的PHP并检查了页面?然后什么都没装?对吗?
$file_name = validateInput($_FILES['file']);
<input type='file' name ='file' />