我做了一个php项目,我已经将它上传到服务器上。我已经在windowas上开发了它,现在我正在尝试将它部署在远程linux服务器上。但我发现错误。 页面的某些部分未显示我不知道为什么? 例如,我有一页appply如下。我只能看到其他部分我无法看到的顶部。
<?php
require 'inc/header.php';
require 'inc/config.php';
require 'inc/functions.php';
$QUERY0 = "
SELECT *
FROM states
";
$result0 = send_query($QUERY0);
$i=0;
while($row = mysql_fetch_array($result0))
{
$states_names[$i]=$row['sname'];
$states_val[$i] =$row['id'];
$i++;
}
$QUERY1 = "
SELECT *
FROM courses
";
$result1 = send_query($QUERY1);
$i=0;
while($row = mysql_fetch_array($result1))
{
$courses_names[$i]=$row['cname'];
$courses_val[$i]=$row['id'];
$i++;
}
$QUERY2 = "
SELECT *
FROM jobprofile
";
$result2 = send_query($QUERY2);
$i=0;
while($row = mysql_fetch_array($result2))
{
$jobprofiles_names[$i]=$row['jobname'];
$jobprofile_val[$i]=$row['jobid'];
$i++;
}
$QUERY3 = "
SELECT *
FROM edu
";
$result3 = send_query($QUERY3);
$i=0;
while($row = mysql_fetch_array($result3))
{
$edu_names[$i]=$row['eduq'];
$edu_val[$i]=$row['id'];
// echo "***********" .$edu_names[$i];
$i++;
}
?>
<div class="left">
<div class="left_articles">
<h2><a href="#">Register</a></h2>
<p class="description">Please submit the folloing form</p>
<p>
<form action="check.php" method="post">
<table border="0">
<tbody>
<tr>
<td>First name</td>
<td><input type="text" name="fname" value="" /></td>
</tr>
<tr>
<td>Last name</td>
<td><input type="text" name="lname" value="" /></td>
</tr>
<tr>
<td>Address</td>
<td><input type="text" name="address" value="" /></td>
</tr>
<tr>
<td>age</td>
<td><input type="text" name="age" value="" /></td>
</tr>
<tr>
<td>State of origin</td>
<td>
<select name="origin">
<? $i=0;
foreach( $states_names as $state )
{
$val= $states_val[$i] ;
?>
<option value="<? echo $val; ?>"><? echo $state; ?> </option>
<?
$i++;
}
?>
</select>
</td>
</tr>
<tr>
<td>Mobile no</td>
<td><input type="text" name="mobile" value="" /></td>
</tr>
<tr>
<td>Sex</td>
<td><select name="sex">
<option value="1">Male</option>
<option value="0">Female</option>
</select></td>
</tr>
<tr>
<td>Marrital Status</td>
<td><select name="ms">
<option value="0">Single</option>
<option value="1">Married</option>
</select></td>
</tr>
<tr>
<td>Email</td>
<td><input type="text" name="email" value="" /></td>
</tr>
<tr>
<td>Job Applying For</td>
<td><select name="jobtype">
<? $i=0;
foreach( $jobprofiles_names as $job )
{
$val= $jobprofile_val[$i] ;
?>
<option value="<? echo $val; ?>"><? echo $job; ?> </option>
<?
$i++;
}
?>
</select>
</td>
</tr>
<tr>
<td>Have u worked in this sector before</td>
<td><select name="exp">
<option value="0">no</option>
<option value="1">yes</option>
</select></td>
</tr>
<tr>
<td>Which department of this sector u have worked?</td>
<td> <input type="text" name="exptype" value="" />
</td>
</tr>
<tr>
<td>Years of experinece in this sector</td>
<td><input type="text" name="yrsexp" value="" /></td>
</tr>
<tr>
<td>Higest Educational qualification</td>
<td><select name="eduq">
<? $i=0;
foreach( $edu_names as $ed)
{
$val= $edu_val[$i];
?>
<option value="<? echo $val; ?>"><? echo $ed; ?> </option>
<?
$i++;
}
?>
</select>
</td>
</tr>
<tr>
<td>Course taken in above educational qualification</td>
<td><select name="crc">
<? $i=0;
foreach( $courses_names as $crc)
{
$val= $courses_val[$i];
?>
<option value="<? echo $val; ?>"><? echo $crc; ?> </option>
<?
$i++;
}
?>
</select>
</td>
</tr>
<tr>
<td>Grade obtained in the above educational qualification</td>
<td><select name="grade">
<option value="0">A</option>
<option value="1">B</option>
<option value="2">C</option>
<option value="3">D</option>
</select>
</td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Apply now" /></td>
</tr>
</tbody>
</table>
<input type="hidden" name="action" value="check" />
</form>
</p>
</div>
</div>
<? require 'inc/right.php' ?>
<? require 'inc/footer.php' ?>
我的文件描述如下。 标头包含标头 righ.php包含页面的右侧
为什么我的页面没有完整显示?斜杠/位置有问题吗? 它在Windows和Linux上有什么不同吗?
答案 0 :(得分:2)
inc和inc / headers.php的文件和目录在文件系统中都是小写的吗? Unix文件名区分大小写。将包含更改为要求查看是否会导致错误。
答案 1 :(得分:2)
您还应该检查所有文件中的行结尾。如果您是在Windows上开发的,那么在整个文件中甚至是混合状态都有cr / lf行结束的可能性非常高。根据您将文件传输到Linux服务器的方式,它们可能会被转换。特别是混合状态会造成麻烦。
另一项检查是文件的编码 - 这些文件在整个项目中也应该是一致的。如果他们使用 UTF-8 ,请确保他们没有Byte-order mark (BOM) ,因为这会导致包含文件出现问题。
答案 2 :(得分:2)
您遇到的Windows和Linux正在以不同的方式处理相对路径。
使用绝对路径(请注意,Windows和Linux上的php都接受正斜杠目录分隔符。)
假设(Linux服务器示例)您的应用程序始终从绝对路径执行:
/home/www/index.php
您的包含脚本位于:
/home/www/inc/header.php
...
然后,您可以定义绝对路径并将其连接到每个包含字符串:
<?php
define('ABSPATH', dirname(__FILE__));
...
include ABSPATH . '/inc/header.php';
...
include ABSPATH . '/inc/footer.php';
?>
答案 3 :(得分:1)
“顶部”是什么意思?
另外,尝试更改你的php标签,将它们自己标记为php,所以
<?php ... ?>
而不是
<? ... ?>
答案 4 :(得分:0)
DIRECTORY_SEPARATOR
常数会帮助你。
替换:
require 'inc/header.php';
使用:
require dirname(__FILE__) . DIRECTORY_SEPARATOR . 'inc' . DIRECTORY_SEPARATOR . 'header.php';
为其他人做类似的事情。