PHP $ _Post不适用于大输入。 (可能缺乏记忆)

时间:2017-07-15 16:35:17

标签: php apache memory

我有一个apache webserver,运行以下php。

    <?php
    if(!empty($_POST['Message'])){
   $var = $_POST['Message'];
   file_put_contents("data.txt", $var . "\n", FILE_APPEND);
   header("Location: https://google.ru");
    exit();
    }
?>

基本上,它从字段中获取提交的消息,并将其发布到.txt文件中。它适用于小输入(20-30个字符)。但它崩溃的不止于此。 我已经检查过apache / php error.log但是没有什么有趣的或与apache相关的.. 我只有来自apache access.log的那些日志错误

"POST /executable.php HTTP/1.1" 200 215 "https://randomsite.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xx.0.xxx.333 Safari/537.36"

我检查了php.ini以修改post_size和max_memory,它给了我2个结果

    /etc/php5/cli/php.ini
/etc/php5/apache2/php.ini

我修改了/etc/php5/apache2/php.ini

max_execution_time 300 
 post_max_size = 500M 
 memory limit = 1024M

仍然无法正常工作,只有少量输入会发布到data.txt文件中。

编辑: 我修改了脚本以检查错误

 <?php error_reporting(E_ALL); ini_set('display_errors', 1);
    if(!empty($_POST['Message'])){
   $var = $_POST['Message'];
   file_put_contents("data.txt", $var . "\n", FILE_APPEND);
   header("Location: https://google.ru");
    exit();
    }
?>

现在在errors.log中我有

 PHP Parse error:  syntax error, unexpected 'if' (T_IF) in /var/www/example.com/executable.php on line 2, referer: https://example.com/

EDIT2:SECCOND ATEMPT(不工作)

   <?php  ini_set('post_max_size', '300M');
    if(!empty($_POST['Message'])){
   $var = $_POST['Message'];
   file_put_contents("data.txt", $var . "\n", FILE_APPEND);
   header("Location: https://google.ru");
    exit();
    }
?> 

1 个答案:

答案 0 :(得分:1)

将此行添加到.htaccess文件

  

php_value post_max_size 30M

这通常发生在php 5.3或更低版本。

如果您没有.htacess文件,请在您的应用程序根文件夹下创建一个

如果您在php.ini中添加了相同内容,请尝试重新启动服务器。

希望这有用。