使用php将文本变量从文本文件传递到html表单单元格
最终目标非常简单。我需要将文本文件中的一行文本变红,将其解析为几个变量,然后将变量显示在网页中表格的单元格中。我已经用mysql做了几十次了,但从来没有用过测试文件。问题是我在牢房里得到了一个空白的愤怒。但是,如果我从命令行运行,数据将在单元格中显示 在我的故障排除中,我把事情降到了最低限度——只有一个变量和一个单元格。如果我硬编码变量$mytest=“15”;它很好用。如果我从文本文件中获取变量并将其读入$mytest,它在单元格中显示为空,但在命令行中看起来很好。我甚至将一个变量设置为15,并通过exec将其发送到一个短C程序,然后将$mytest设置为返回值,并且仍然为空使用php将文本变量从文本文件传递到html表单单元格,php,html,c,Php,Html,C,最终目标非常简单。我需要将文本文件中的一行文本变红,将其解析为几个变量,然后将变量显示在网页中表格的单元格中。我已经用mysql做了几十次了,但从来没有用过测试文件。问题是我在牢房里得到了一个空白的愤怒。但是,如果我从命令行运行,数据将在单元格中显示 在我的故障排除中,我把事情降到了最低限度——只有一个变量和一个单元格。如果我硬编码变量$mytest=“15”;它很好用。如果我从文本文件中获取变量并将其读入$mytest,它在单元格中显示为空,但在命令行中看起来很好。我甚至将一个变量设置为15,
<?php
$handle = fopen("/home/vm725d/vmbrr.v2.6.6.vticketQ.log", "r");
$line = fgets($handle);
// process the line read.
$fields = explode("|",$line);
// Get data from fields
$vticket = explode (":", $fields[0]);
//$vTicket=$vticket[1];
$vTicket="15";
$mytest=exec ('/opt/observium/html/custom/fixstring ' . $vTicket);
//$mytest=$vTicket;
print "$mytest";
fclose($handle);
?>
<html>
<body>
<CENTER><B>V-Ticket Test</b> </CENTER>
<TABLE>
<FORM METHOD="POST" name=modticket action=modticket.php>
<center><TABLE bgcolor="#258e8e" width=800 border=1>
<TR></TR<TR></TR>
<TR>
<TD bgcolor="#FFFF99">vTicket:</TD>
<TD width=24><input name="thing1" value="<?php print $mytest;?>"></TD>
</TR>
</table>
<input type=submit name=create_case value="Update">
</FORM>
</body>
</html>
V-Ticket测试
欢迎来到StackOverflow!这听起来可能是我的权限问题。当从命令行运行PHP时,PHP由用户运行,但它通常由不同的用户通过web服务器运行,例如www-data
。如果您的用户有权执行该文件,但web服务器用户没有,则会导致您看到的问题:works可以正确地手动运行,但不能通过HTTP运行
要快速检查这是否是您的问题,请尝试运行chmod+x/opt/observium/html/custom/fixstring
。它现在在浏览器中工作吗
希望是这样。然而,这在技术上是一个不安全的解决方案,因为现在任何用户都可以执行该文件。如果您希望更安全,您应该运行chmod o-x/opt/observium/html/custom/fixstring
来恢复此更改,并运行chown www-data/opt/observium/html/custom/fixstring
来更改web服务器的文件所有权,假设www-data
是服务器的用户名。希望这有帮助 当我使用一个输入文件运行PHP时,输入文件的格式与您解析它的方式相同,它的工作方式与您描述的一样。很可能这只是一个权限问题,正如BradzTech的回答所暗示的那样
无论如何,添加print“$line\n”可能有助于排除故障代码>和打印($fields)代码>和打印($vticket)代码>以确保您正在阅读和分析您认为自己是什么
我会放弃fixstring
C程序进行故障排除;我想这只是让你的事情复杂化了。只需使用PHP打印您正在设置的变量,并从输出与预期不同的第一点开始进行故障排除
编辑:显示代码工作的最小示例
您的PHP代码似乎没有任何问题。当我使用您对问题的评论中的输入行运行下面的代码(添加了我建议的调试并缩减了HTML)时,我得到了您期望的结果:
cat vmbrr.v2.6.6.vticketQ.log
vticket: 15 | From: John Doe | To: Jane Doe | Date: Wed, 17 Oct 2018 16:11:29 +0000 | User: Phil Collins | Program: TruthorDare | Issue: Cannot read text into v ariable | Area: 51 | POC: C. Darwin | Chargeline: R&D | ECD: 02/15/19 | Status: 0%
<?php
$handle = fopen("vmbrr.v2.6.6.vticketQ.log", "r");
$line = fgets($handle);
// process the line read.
$fields = explode("|",$line);
print_r($fields);
print "\n";
// Get data from fields
$vticket = explode (":", $fields[0]);
print_r($vticket);
print "\n";
$vTicket=$vticket[1];
$mytest=$vTicket;
print "$mytest\n";
fclose($handle);
?>
<TD width=24><input name="thing1" value="<?php print $mytest;?>"></TD>
Array
(
[0] => vticket: 15
[1] => From: John Doe
[2] => To: Jane Doe
[3] => Date: Wed, 17 Oct 2018 16:11:29 +0000
[4] => User: Phil Collins
[5] => Program: TruthorDare
[6] => Issue: Cannot read text into v ariable
[7] => Area: 51
[8] => POC: C. Darwin
[9] => Chargeline: R&D
[10] => ECD: 02/15/19
[11] => Status: 0%
)
Array
(
[0] => vticket
[1] => 15
)
15
<TD width=24><input name="thing1" value=" 15 "></TD>
cat从file.php读取文本
vticket: 15 | From: John Doe | To: Jane Doe | Date: Wed, 17 Oct 2018 16:11:29 +0000 | User: Phil Collins | Program: TruthorDare | Issue: Cannot read text into v ariable | Area: 51 | POC: C. Darwin | Chargeline: R&D | ECD: 02/15/19 | Status: 0%
<?php
$handle = fopen("vmbrr.v2.6.6.vticketQ.log", "r");
$line = fgets($handle);
// process the line read.
$fields = explode("|",$line);
print_r($fields);
print "\n";
// Get data from fields
$vticket = explode (":", $fields[0]);
print_r($vticket);
print "\n";
$vTicket=$vticket[1];
$mytest=$vTicket;
print "$mytest\n";
fclose($handle);
?>
<TD width=24><input name="thing1" value="<?php print $mytest;?>"></TD>
Array
(
[0] => vticket: 15
[1] => From: John Doe
[2] => To: Jane Doe
[3] => Date: Wed, 17 Oct 2018 16:11:29 +0000
[4] => User: Phil Collins
[5] => Program: TruthorDare
[6] => Issue: Cannot read text into v ariable
[7] => Area: 51
[8] => POC: C. Darwin
[9] => Chargeline: R&D
[10] => ECD: 02/15/19
[11] => Status: 0%
)
Array
(
[0] => vticket
[1] => 15
)
15
<TD width=24><input name="thing1" value=" 15 "></TD>
因此,我认为这是一个非代码问题,例如无法读取输入文件,可能是由于权限;还有许多其他的可能性。您能发布一个示例输入文件吗?i、 例如,一个三行vmbrr.v2.6.6.vticketQ.log
文件?web服务器错误日志中有什么?下面的示例输入文件-单行。我从脚本中的所有字段开始,但很快将其缩减为一个变量,因为它们都有相同的问题。vticket:15 | From:John Doe | to:Jane Doe | Date:Wed,2018年10月17日16:11:29+0000 |用户:Phil Collins |程序:Truthordar |问题:无法将文本读入可变|区域:51 | POC:C.Darwin | Chargeline:R&D | ECD:02/15/19 |状态:0%谢谢我验证了权限与我拥有的20多个正常工作的php脚本相同。我甚至用完全烫发的方式打开了它,只是为了确定。@slendeprovo:重要的是输入文件的权限;PHP脚本可以读取输入文件吗。。。是-它可以很好地读取输入文件。我已临时打开测试权限。