IIS7+PHP上传图片却无权访问的一个解决方法

PHP上传文件的机制是

先将文件上传到一个临时目录 -> 然后将这个文件从临时目录移动到要求的目录

好比说我要上传一个图片, 需要:

1.我对图片最终保存的文件夹有访问权限

2.我对临时文件夹里的文件有访问权限

在Windows Server2008中, PHP5.4默认使用的临时文件夹是这样的: C:\Windows\Temp

这个文件夹的对IIS的权限不好处理

解决方法是: 更改PHP上传临时文件夹地址

Step1. 新建C:\_temp_php文件夹

Step2 编辑php.ini文件, 搜索 upload_tmp_dir, 然后写成

upload_tmp_dir = C:\_temp_php

注意不要前面的注释分号, 然后保存

Step3 重启IIS

我如此操作就解决了, 就是让IIS对upload_tmp_dir中的文件有访问权限.

IIS7和PHP配置好后, 添加站点php文件报404或500错误的一个解决方法

在网站根目录下要有一个web.config文件, 内容像下面, 指向一个php-cgi.exe

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <httpErrors errorMode="Detailed" />
        <handlers>
            <add name="phpall" path="*.php" verb="*" modules="FastCgiModule" scriptProcessor="C:\php\php-cgi.exe" resourceType="Unspecified" requireAccess="Script" />
            <add name="fastcgi" path="*.php" verb="*" modules="FastCgiModule" scriptProcessor="C:\php\php-cgi.exe" resourceType="Unspecified" requireAccess="Script" />
        </handlers>
        <defaultDocument>
            <files>
                <clear />
                <add value="index.html" />
                <add value="index.htm" />
                <add value="index.php" />
                <add value="Default.htm" />
                <add value="Default.asp" />
                <add value="iisstart.htm" />
                <add value="default.aspx" />
            </files>
        </defaultDocument>
        <directoryBrowse enabled="false" />
    </system.webServer>
</configuration>

添加这个文件有可能解决问题.

话说IIS的配置太难了.