相同的PHP代码在两个脚本中表现不同?

时间:2014-06-27 14:43:25

标签: php

所以我有一段代码,我正在尝试下载正在运行的REST API运行的音频文件,它的周围环境如下:

elseif($method == 'synthTTS'){
        //check if all required parameters are accounted for
        checkParameters($data, array('message'));
        $message = $data['message'];
        $message = str_replace(' ', '+', $message);
        $url = "http://tts-api.com/tts.mp3?q=" . $message;
        $path = "tts-mp3/" . str_replace('+', '', $message) . ".mp3";
        // saveUrl($url, $path);
        echo $url . "\n" . $path . "\n";
        $file = file_get_contents($url);
        file_put_contents($path, $file);
        exit("Successfully synthesized TTS to " . $path);
    }

我将此“hello world”作为message参数传递,echo显示预期的$ path和$ url值(分别为“tts-mp3 / helloworld.mp3”和“http://tts-api.com/tts.mp3?q=hello+world”)。但是,当我休息这个'功能'时,没有文件被保存。在我这样做之后,我在PHP交互式shell中运行了file_get_contents行和file_put_contents行。

$ php -a
Interactive shell

php > $file = file_get_contents("http://tts-api.com/tts.mp3?q=hello+world");
php > file_put_contents("tts-mp3/helloworld.mp3", $file);

这很好用。我认为这很奇怪,为了进一步测试,我将这两行代码与硬编码的$ path和$ url一起放回到REST脚本中,但它仍无法正常工作。因此,作为最终测试,我将这两行复制/粘贴到一个新的PHP脚本中并运行它。有效。所以我的问题是“为什么相同的代码在两个不同的脚本中完全不同?”

我在PHP版本5.3和5.4中尝试过这段代码。

编辑:所以我尝试将代码移出包含所有REST函数的if块,并将其放在我的include / require语句的右上方,并且它有效。所以我一次将它移动一行,直到它坏了。

//include all the necessary external libraries
include_once 'ses.php'; //for sending emails of AWS
include_once 'sns.php'; //for the notification service of AWS
include_once 'sqs.php'; //for the queueing service of AWS
include_once 'gearman-client.php'; //for sending jobs to gearman workers
include_once 'vendor/rmccue/requests/library/Requests.php'; //for making web requests
include_once 'twitter-api-php/TwitterAPIExchange.php'; //for using the Twitter API
Requests::register_autoloader();

//IT WORKS IF I PUT THE CODE HERE

//initialize twitter settings
$settings = array(
        'oauth_access_token' => "YOUR_OAUTH_ACCESS_TOKEN",
        'oauth_access_token_secret' => "YOUR_OAUTH_ACCESS_TOKEN_SECRET",
        'consumer_key' => "YOUR_CONSUMER_KEY",
        'consumer_secret' => "YOUR_CONSUMER_SECRET"
    );

//BUT NOT IF I PUT IT HERE

我把它移到了设置数组的定义之后(我还没有完成)并且它已经破坏了。奇怪的是,当我注释掉$ settings定义时(代码仍然在它之后)它仍然没有用。

0 个答案:

没有答案