cURL将文件上传到MS Windows上的远程服务器
当我使用linux并尝试使用此脚本将文件上传到远程服务器时,一切都很好。但如果我使用Windows,那么脚本无法正常工作。
脚本:
$url="http://site.com/upload.php";
$post=array('image'=>'@'.getcwd().'images/image.jpg');
$this->ch=curl_init();
curl_setopt($this->ch, CURLOPT_URL, $url);
curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($this->ch, CURLOPT_TIMEOUT, 30);
curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($this->ch, CURLOPT_POST, 1);
curl_setopt($this->ch, CURLOPT_POSTFIELDS, $post);
$body = curl_exec($this->ch);
echo $body; // << on Windows empty result
我究竟做错了什么?
PHP 5.3
Windows 7 - 不工作,Ubuntu Linux 10.10 - 工作
没有找到相关结果
已邀请:
5 个回复
磋判粗惊
。 一个显而易见的尝试是
看看是否有效。 如果你想使你的脚本可移植以便它可以在Windows或Linux上运行,你可以使用PHP的预定义常量
街茬
在Windows
返回
在Linux中它返回
所以,你的上面的代码将编译如下: Windows:
Linux:
既然你提到它在linux中为你工作,这意味着你的文件系统中存在
。 我的PHP版本: Linux:
Windows:
寒健
看看
真的包含什么。使用cURL的配置方式,
将包含服务器的响应或失败时的错误。没有办法用
来区分空响应或假。请求可能正常通过,服务器只返回任何内容。 但是,正如其他人所说,您的文件路径似乎无效。
不输出最终
,您需要添加一个才能使代码正常工作。既然你说它适用于linux,即使没有丢失的斜杠,我也想知道它是如何找到你的文件的。 我建议你创建一个相对于正在运行的PHP脚本的文件路径,或者提供一个绝对路径,而不是依赖于
,这可能不会返回你期望的内容。
的值在整个系统中是不可预测的,并且不是非常便携。 例如,如果您尝试POST的文件与PHP脚本位于同一文件夹中:
就足够了。如果需要,提供绝对路径:
正如Terence所说,如果你需要你的代码可以在Linux和Linux之间移植。 Windows,考虑使用PHP的预定义常量
getcwd()cURL
扫窟
然后成功
慷祈霖黑