杰者的备忘录

当前位置:   网站首页 >> 服务器 >> WIN

解决IIS上安装thinkphp6运行报500错误

今天在一个windows的服务器iis上安装thinkphp6,按照正常理解应该把站点运行目录设置在public,但是安装完第一次访问正常,再刷新就500,打开报错显示:

Warning: require(D:\web\vendor\autoload.php): failed to open stream: Too many open files in D:\web\public\index.php on line 15 
Fatal error: require(): Failed opening required 'D:\web\public/../vendor/autoload.php' (include_path='.;C:\php\pear') in D:\web\public\index.php on line 15

想去看看日志有没有问题,看了一眼runtime目录没有日志生成,怀疑是权限问题,把运行目录改回根目录,访问public发现日志可以正常生成,也不报错了。

找了一圈由于thinkphp6刚出,基本没资料,官网也没有人遇到过,那就自己折腾吧。

但是总不能让用户每次访问都手动加public吧。于是让URL重写帮我们加public吧。

折腾了半天把根目录下的web.config拼凑出来了

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<system.webServer>
		<rewrite>
			<rules>
				<rule name="OrgPage" stopProcessing="true">
					<match url="^(.*)$" />
					<conditions logicalGrouping="MatchAll">
						<add input="{APPL_PHYSICAL_PATH}public{PATH_INFO}" matchType="IsFile" negate="true" />
						<add input="{APPL_PHYSICAL_PATH}public{PATH_INFO}" matchType="IsDirectory" negate="true" />
					</conditions>
					<action type="Rewrite" url="/public/index.php/{R:1}" />
				</rule>
				<rule name="public" stopProcessing="true">
					<match url="^(.*)$" ignoreCase="false" />
					<conditions logicalGrouping="MatchAll">
						<add input="{URL}" pattern="^/public/" ignoreCase="false" negate="true" />
					</conditions>
					<action type="Rewrite" url="/public/{R:1}" />
				</rule>
			</rules>
		</rewrite>
	</system.webServer>
</configuration>

测试各方面都没什么问题,搞定~ 

就是折腾了我两个多小时,心累~

发表我的评论

Hi,您需要填写昵称和邮箱!

  • 必填项