exec应该可以的,但是根据命令特征你可能需要结合使用sleep方法,例如:
exec('D:');
sleep(1);
exec('cd D:\\path\\path', $cmd); //反斜杠要转义哦
if (! empty($cmd)) {
//$cmd 保存的是命令执行后的屏幕输出,针对cd这条命令,如果有输出肯定是错误信息
die($cmd);
}
exec('xelatex test.tex', $cmd);
(Nginx用户可以选择方案一或方案二,IIS用户请使用方案一)
方案一,修改php.ini文件,将cgi.fix_pathinfo的值设置为0.完成后请重启PHP和NGINX(IIS).
方案二,在Nginx配置文件中添加以下代码:
复制代码 代码如下:
if ( $fastcgi_script_name ~ \..*\/.*php ) {
在IIS⑦0上以FastCGI方式配置好PHP运行环境,测试可以正常运行PHP程序后,将PHP程序部署上去,导入程序原来的数据和配置信息.很快就有问题出来啦下面我们就详细记录下.
今天准备将一个php
demo放在IIS下运行,网站在IIS下的配置是这样的:
应用程序池是集成模式下的.net
framework
应用程序池标识配置为IIS内置的NETWORKSERVICE,
使用的认证方式为匿名身份验证.
打开本地的网站,访问php页面,
好吧,是权限问题,最简单的解决办法是把C:UsersAdministratorPhpstormProjectsphpDemo的权限设成Everyone,
并允许完全控制:
重新访问php页面,成功了:
上面的方法是够简单,但也太不安全了,平时本地搭个demo这样做没问题,真正上线的时候,这样做迟早出问题的.
于是重新设置,把该目录下的只读权限赋给NETWRORKSERVICE帐号再试一下
那么解决办法就是:
①
将IUSR设置为C:UsersAdministratorPhpstormProjectsphpDemo的读权限,类似之前对NETWORKSERVICE的设置.
②
或选择使用应用程序池标识即可.
以上所述就是本文的全部内容了,希望大家能够喜欢.