php脚本测试很好但执行方式不同

时间:2015-03-25 19:49:09

标签: php

变量sessionId通过URL传递。使用html / php脚本,它测试正常。假设URL为http://xxxx?sessionId=Sam,变量fileId为SamM.wav。但是当确切的脚本放入服务器时,保存的文件是M.wav而不是SamM.wav - 我错过了什么?以下是代码: 更新: PHP版本: PHP 5.4 PHP 5.5.22

    <?php
        $Id =   $_GET["sessionId"]  ;
        $fileId = "$Id" . "M.wav";      


        $fp = fopen( "$fileId", 'wb' );
        fwrite( $fp, $GLOBALS[ 'HTTP_RAW_POST_DATA' ] );
        fclose( $fp );
    ?>

2 个答案:

答案 0 :(得分:0)

认为必须是:

<?php
    $id = $_GET["sessionId"];
    $fileId = $id . "M.wav";      

    $fp = fopen( $fileId, 'wb' );
    fwrite( $fp, $GLOBALS['HTTP_RAW_POST_DATA'] );
    fclose( $fp );
?>

我不知道你正在运行哪个版本的PHP但是&#34; $ GLOBALS [&#39; HTTP_RAW_POST_DATA&#39;]&#34;已弃用版本&#34; 5.6.0&#34;。

有关详细信息,请参阅:http://php.net/manual/en/reserved.variables.httprawpostdata.php

不是:http://xxxx?sessionId=Sam但是http://xxxx/?sessionId=Sam (我知道大多数浏览器会重定向你,但有些人会赢得

答案 1 :(得分:0)

我的私有服务器上有这个,它运行正常:

<?php
ini_set("display_errors", true);
error_reporting(E_ALL);


$id = $_GET["sessionId"];
$fileId = $id . "M.wav";

$fp = fopen( "./writetest/" . $fileId, 'wb' );

if(is_resource($fp) === true) {
     fwrite( $fp, 'test');
     fclose( $fp );
} else {
    echo "nope";
}
?>

我的ls表示:

[root@servername]# ls -l writetest/
total 4
-rw-r--r--. 1 **** **** 4 Mar 25 21:11 testM.wav