如何用php连接sharepoint
Posted
技术标签:
【中文标题】如何用php连接sharepoint【英文标题】:how to connect sharepoint with php 【发布时间】:2013-07-06 22:01:50 【问题描述】:有谁知道如何集成 Sharepoint 和 php。我正在尝试开发可以连接到 Sharepoint 的 php 应用程序。特别是因为基本上我是网站开发人员,我希望我的所有网站都与 Sharepoint 连接。所以,我只是想创建一个适用于所有网站的 PHP 应用程序。我不知道有没有可能,但我想试一试,但不知道如何进行。
欢迎提出任何想法/建议。
提前致谢。
【问题讨论】:
可能重复:***.com/questions/7782645/… @ckhan 谢谢你的链接,但首先我想在使用数据库之前将 php 连接到共享点。我已经在服务器中有一个共享点,现在我想用一些 php 连接那个共享点我的电脑中的应用程序。 【参考方案1】:试试这个API
在 SharePoint 中
下载 WSDL。通常在这个位置:
下载 API
确保同时保存SoapClientAuth.php
和SharePointAPI.php
在 PHP 中
// 0: include api in your php script.
require_once('SharePointAPI.php');
// 1: connect to SharePoint
$sp = new SharePointAPI('<username>', '<password>', '<path_to_WSDL>');
// 2: read a list
$listContents = $sp->read('<list_name>');
// 3: now you have a 2-D array to work with in PHP
foreach($listContents as $item)
var_dump($item);
通过这个API,你还可以查询、更新、创建、删除列表,查询列表元数据
【讨论】:
你的答案似乎不错,但我得到了$listContents = $sp->read('<list_name>');
,未经授权 错误。知道为什么吗?
您在使用 NTLM 吗?试试$sp = new SharePointAPI('<username>', '<password>', '<path_to_WSDL>', true);
注意最后一个参数true。
试试这个工具。输入您的凭据和列表名称。请注意大小写和空格。 spcamlqueryhelper.codeplex.com
它对我有用,但我必须在最后添加SPONLINE
。 new SharePointAPI('xx', 'yy', 'zz', 'SPONLINE');
【参考方案2】:
我在 API 中使用它来将我的 PHP Web 应用程序与 SharePoint 连接并将数据从 PHP 传输到 SharePoint,它对我来说 100% 有效:
使用说明:
安装
下载要与之交互的 SharePoint 列表的 WSDL 文件。这个一般可以在:sharepoint.url/subsite/_vti_bin/Lists.asmx?WSDL
如果您正在使用 composer,只需将 thybag/php-sharepoint-lists-api 添加到您的 composer.json 并运行 composer。
"require":
"thybag/php-sharepoint-lists-api": "dev-master"
如果您不使用 composer,您可以手动下载 SharePoint API 文件的副本,并在项目中包含顶部的“SharePointAPI.php”类。
创建 SharePointAPI 对象
为了使用 PHP SharePoint Lists API,您需要一个具有所需列表权限的有效用户/服务帐户。
对于大多数 SharePoint 安装,您可以使用以下方法创建 API 的新实例:
use Thybag\SharePointAPI;
$sp = new SharePointAPI('', '', '');
如果您的安装需要 NTLM 身份验证,您可以改为使用:
use Thybag\SharePointAPI;
$sp = new SharePointAPI('', '', '', 'NTLM');
SharePoint Online 用户必须使用:
use Thybag\SharePointAPI;
$sp = new SharePointAPI('', '', '', 'SPONLINE');
默认情况下,所有方法都返回一个数组。 SetReturnType 可用于指定结果应作为对象返回。
从列表中读取。
要返回列表中的所有项目,请使用任一
$sp->read('');
or
$sp->query('')->get();
要仅返回列表中的前 10 个项目,请使用:
$sp->read('', 10);
或
$sp->query('')->limit(10)->get();
要从姓氏为 smith 的列表中返回所有项目,请使用:
$sp->read('', NULL, array('surname'=>'smith'));
或
$sp->query('')->where('surname', '=', 'smith')->get();
查询列表
当您需要指定一个复杂的查询,以便使用 read 方法轻松定义时,可以使用 query 方法。查询是使用许多(希望是富有表现力的)伪 SQL 方法构建的。
例如,如果您想查询宠物列表并返回所有 5 岁以下的狗(按年龄排序),您可以使用。
$sp->query('list of pets')->where('type','=','dog')->and_where('age','sort('age','ASC')->get();
如果您想获得前 10 只猫或仓鼠宠物,您可以使用:
$sp->query('list of pets')->where('type','=','cat')->or_where('type','=','hamster')->limit(10)->get();
如果需要返回 5 个项目,但包括列表中包含的所有字段,则可以使用。 (将 false 传递给 all_fields 以包含隐藏字段)。
$sp->query('list of pets')->all_fields()->get();
如果您有一组 CAML 用于您想要运行的特定高级查询,您可以使用以下方法将其传递给查询对象:
$sp->query('list of pets')->raw_where('Hello World')->limit(10)->get();
添加到列表
要将新项目添加到列表中,您可以使用“write”、“add”或“insert”方法(所有功能都相同)。在包含名字、姓氏、年龄和电话列的列表中创建新记录可能如下所示:
$sp->write('', array('forename'=>'Bob','surname' =>'Smith', 'age'=>40, 'phone'=>'(00000) 000000' ));
您还可以使用以下命令同时运行多个写入操作:
$sp->writeMultiple('', array(array('forename' => 'James'),array('forename' => 'Steve')));
编辑行
要编辑一行,您需要有它的 ID。假设上面一行的 ID 为 5,我们可以将 Bob 的名字改为 James:
$sp->update('','5', array('forename'=>'James'));/code>
与 write 方法一样,您也可以使用以下方法一起运行多个更新操作:
$sp->updateMultiple('', array( array('ID'=>5,'job'=>'Intern'),array('ID'=>6,'job'=>'Intern')));
使用 updateMultiple 时,每个项目都必须有一个 ID。
删除行
要删除行,需要 ID 和列表名称。要删除 ID 为 5 的 James 的记录,您可以使用:
$sp->delete('', '5');
如果您希望一次删除多条记录,也可以将一组 ID 传递给删除多个方法
$sp->deleteMultiple('', array('6','7','8'));
辅助方法
PHP SharePoint API 包含许多帮助方法,可以更轻松地确保某些值对于某些 SharePoint 特殊数据类型的格式正确。
日期时间 DateTime 方法可以传递基于文本的日期
$date = \Thybag\SharepointApi::dateTime("2012-12-21");
或unix时间戳
$date = \Thybag\SharepointApi::dateTime(time(), true);
疑难解答
找不到包装“https”
如果您收到此错误,通常意味着您的 Web 服务器上未启用 php_openssl(需要 curl https URL)。对于许多本地 Web 服务器(例如 XAMPP),您可以简单地打开 php.ini 文件并取消注释 php_openssl 行(即删除它之前的;)。
注意:如果您使用 SharePoint Online 并遇到 SSL 错误,请提取已从 SSL v3 更改为 TLS 的最新版本以进行 SharePoint 在线连接。
将此行添加到您的 composer.json 文件中
thybag/php-sharepoint-lists-api: dev-develop
您可以使用上述 SharePoint API 执行 CRUD(创建/读取/更新/删除)操作。
参考网址链接:https://github.com/thybag/PHP-SharePoint-Lists-API
【讨论】:
虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review @19greg96 我已经用所有基本命令和参考 URL 更新了答案 感谢来自 github 的复制粘贴 @MoisheySchwartz 我提供了参考链接。【参考方案3】:如果我没看错你的问题,你想使用 PHP 与你的 SharePoint 网站进行交互。您可以使用 SharePoint 的 Web 服务进行大多数交互。例如,您可以使用列表 Web 服务 (http:///_vti_bin/lists.asmx) 读取所有列表项。您可以将文件上传到 SharePoint 文档库。我疯狂地寻找我为实现这一目标所做的事情的例子,但我已经失去了它。我记得使用 Curl 进行上传。
有许多网站讨论使用 PHP 访问 SharePoint 数据。以下是我通过简单的谷歌搜索找到的一对:
http://craiget.com/hello-sharepoint-meet-php/ http://davidsit.wordpress.com/2010/02/23/reading-a-sharepoint-list-with-php/ http://social.msdn.microsoft.com/Forums/sharepoint/en-US/3aa34d3d-0f0b-48bd-9752-f9c0c4577804/php-and-sharepoint-calendar-list http://brian-strickland.com/index.php/2012/04/19/displaying-and-downloading-sharepoint-document-libraries-using-php/以及关于名为 Camelot PHP 的工具的讨论 here
【讨论】:
@robbert 是的,我想使用 php 与 sharepoint 站点进行交互,但在此之前我认为我需要在两者之间建立连接。阅读列表项目,只有当我在两者之间建立联系时才能上传,不是吗?现在我对如何将 php 与 sharepoint 连接感到困惑。 可能你最好的,如上面建议的,是使用 SharePoint 提供的 RESTful 服务,尝试:mstecharchitect.blogspot.com/2010/01/… 我添加了一些链接到讨论解决方案的网站。可以做到的。 @robbert 感谢您提供的链接...我正在阅读它,我相信它会有所帮助。 :) 第一个链接 (craiget.com/hello-sharepoint-meet-php) 现在返回 404。以上是关于如何用php连接sharepoint的主要内容,如果未能解决你的问题,请参考以下文章