在IIS 7上添加PHP写入权限

发布于 2024-11-05 05:57:19 字数 245 浏览 1 评论 0原文

我需要一个 PHP 脚本来获得目录的写入权限。 PHP 5.3 在 IIS 7 下作为 FastCGI 运行,Windows Server 2008 作为 OP。在我的 php 错误日志中,当脚本尝试写入文件时,我收到“权限被拒绝”。

我该如何解决这个问题?我尝试将所有权限授予 IIS_IUSR 和 IUSR_myservername(右键单击我的文件夹),但它不起作用。

任何帮助将不胜感激,

问候,

朱利安

I need a PHP script to have writing permission in a directory. PHP 5.3 is running as FastCGI under IIS 7 with windows server 2008 as OP. On my php error logs, I got "permission denied" when the script attempts to write a file.

How can I sort this out? I tried to give all right to IIS_IUSR and to IUSR_myservername (with a right click on my folder) but it didn't work.

Any help would be very appreciate,

Regards,

Julien

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

最美的太阳 2024-11-12 05:57:19

我有相同的设置,我必须授予写入权限:

  • IUSR
  • IIS AppPool\<>

I have the same setup and I have to give write permission to:

  • IUSR
  • IIS AppPool\<<AppPoolName>>
凉月流沐 2024-11-12 05:57:19

实际上,情况有点复杂。

首先要做的是在相关网站上创建一个简单的 PHP 文件。 (在相关网站上创建该文件很重要,因为每个网站可能有不同的设置。)该文件的内容应该是:

<?php var_dump(ini_get('fastcgi.impersonate')); ?>

使用浏览器导航到该文件。

** 情况 1 **

如果您的浏览器显示:

string(1) "1"

然后,您需要执行以下命令(您需要将“默认网站”替换为您在 IIS 中为网站指定的名称):

%windir%\system32\inetsrv\appcmd.exe list config "Default Web Site" ^
/section:anonymousAuthentication

您将收到如下所示的答案this :

<system.webServer>
  <security>
    <authentication>
      <anonymousAuthentication enabled="true" userName="IUSR" />
    </authentication>
   </security>
</system.webServer>

您要查找的信息是 anonymousAuthentification 标记的 username 属性的值。

  • 如果该值不为空,则其内容是您需要授予写入权限的用户的名称。
  • 如果该值为空或者该属性只是缺失,则您需要向 IIS AppPool\AppPoolName 授予写入权限(将“AppPoolName”替换为您网站的应用程序池的名称)。

** 情况 2 **

如果您的浏览器显示:

string(1) "0"

您需要向 IIS AppPool\AppPoolName 授予写入权限(将“AppPoolName”替换为您网站的应用程序池的名称)。

Actually, it's a little bit more complicated.

The first thing to do is to create a simple PHP file on the concerned website. (It's important to create the file on the concerned website because each website can have a different setting.) The content of this file should be:

<?php var_dump(ini_get('fastcgi.impersonate')); ?>

Navigate to this file using a browser.

** Case 1 **

If your browser shows :

string(1) "1"

Then, you need to execute the following command (you need to replace "Default Web Site" by the name you gave to your website in IIS) :

%windir%\system32\inetsrv\appcmd.exe list config "Default Web Site" ^
/section:anonymousAuthentication

You will receive an answer which looks like this :

<system.webServer>
  <security>
    <authentication>
      <anonymousAuthentication enabled="true" userName="IUSR" />
    </authentication>
   </security>
</system.webServer>

The information you are looking for is the value of the username attribute of the anonymousAutthentification tag.

  • If this value is not empty, its content is the name of the user you need to give write permissions to.
  • If this value is empty or if the attribute is simply missing, you need to give write permissions to IIS AppPool\AppPoolName (replace "AppPoolName" with the name of your website's application pool).

** Case 2 **

If your browser shows :

string(1) "0"

You need to give write permissions to IIS AppPool\AppPoolName (replace "AppPoolName" with the name of your website's application pool).

表情可笑 2024-11-12 05:57:19

您需要授予PHP写入权限,而不是IIS。这意味着运行 PHP 的用户帐户需要权限(可能与运行 IIS 的用户帐户相同)。

You need to give PHP writing permission, not IIS. This means the user account that PHP is running on needs permission (probably the same one IIS is running on).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文