Exec和Include功能不起作用

时间:2013-08-13 05:58:33

标签: php

我正在尝试通过php可视化文件 file.txt 。它与php代码存在于同一文件夹中。这个文件是perl程序的结果 1.pl
我使用以下代码:

 exec("perl C:/inetpub/wwwroot/1.pl arg1");
 include("ctrlG.txt");

我在我的服务器上激活了fast-cgi模块,否则会正常工作 以上两点都没有执行 它返回以下错误:

PHP Warning:    
include() [<a href='function.include'>function.include</a>]: Unable to access ctrlG.txt in C:\inetpub\wwwroot\upload_file.php on line ##.  
PHP Warning:   
 include(ctrlG.txt) [<a href='function.include'>function.include</a>]: failed to open stream: Permission denied in C:\inetpub\wwwroot\upload_file.php on line ##.  
PHP Warning:   
 include() [<a href='function.include'>function.include</a>]: Failed opening 'ctrlG.txt' for inclusion (include_path='.;C:\php\pear') in C:\inetpub\wwwroot\upload_file.php on line ##.

请帮助纠正代码或任何其他问题 OR
使用php在浏览器中执行perl和可视化文本文件的更好方法。

1 个答案:

答案 0 :(得分:0)

首先,检查您要查找的文件是否存在:

$file = 'ctrlG.txt';
if(!file_exists($file)) die("File '{$file}' does not exist");

其次,检查它是否可读:

if(!is_readable($file)) die("File '{$file}' is not readable");

最可能的情况是该文件存在且没有设置可读权限,因此apache(或您的Web服务器正在运行的任何用户)都可以读取它。

请记住,如果您首先通过CLI(命令行界面)运行此脚本,则生成的文件可能由运行该脚本的用户拥有 - 因此出于安全原因,apache可能无法读取此文件

在Linux中,您可以更改文件组和权限,以便apache用户可以读取,如下所示:

chgrp apache ctrlG.txt
chmod g+r ctrlG.txt