php 使用阿里云oss Can’t use method return value in write context
排查一下自己的php版本是不是比较低
我尝试从oss_sdk2.6 更换为aliyun-oss-php-sdk-2.2.4
问题完美解决
链接:https://github.com/aliyun/aliyun-oss-php-sdk/releases/tag/v2.2.4
顺便补充下 原生php 使用oss-sdk
1,如果没有composer 直接通过上面链接下载下来压缩包 然后直接解压,放入项目根目录
2,在\oss-php-sdk\src\OSS 目录我简单写了一个oss连接类 这个自己看着放
<?php
namespace OSS;
require_once __DIR__ . '/../../autoload.php';
use OSS\Core\OssException;
/**
*阿里云oss文件上传
*/
class AliOss
{
const endpoint = 'xxx';
const accessKeyId = 'xxx';
const accessKeySecret = 'xxx';
const bucket = 'xxx';
/**
* 根据Config配置,得到一个OssClient实例
*
* @return OssClient 一个OssClient实例
*/
public static function getOssClient()
{
try {
$ossClient = new OssClient(self::accessKeyId, self::accessKeySecret, self::endpoint, false);
} catch (OssException $e) {
printf(__FUNCTION__ . "creating OssClient instance: FAILED\n");
printf($e->getMessage() . "\n");
return null;
}
return $ossClient;
}
public static function getBucketName()
{
return self::bucket;
}
}
3,直接随便找个php调用就好了,记得这个 require_once ‘oss-php-sdk/autoload.php’;//这个特别重要
date_default_timezone_set("Asia/Shanghai");
require_once 'oss-php-sdk/autoload.php';//这个特别重要
use OSS\AliOss;
class Dblib
{
/**
* oss上传图片
*
* @return array
* @throws \OSS\Core\OssException
*/
public function uploadImage($img_url)
{
$ossClient = AliOss::getOssClient();
$bucketName = AliOss::getBucketName();
$url = explode('?',$img_url)[0];
$url = explode('/',$url);
$img_name = end($url);
$path = 'test/'.$img_name;
// 执行上传并获取返回 oss 信息
$ossClient->putObject($bucketName,$path, file_get_contents($img_url));
return "你的oss-url". "/" . $path;
}
}