我开发了一个在Linux上运行完美的网站,但是当我尝试在Windows生产服务器上运行它时,php脚本无法运行。此行之后代码中的所有内容都无法执行任何操作:
require_once __DIR__ . DIRECTORY_SEPARATOR . 'lib' . DIRECTORY_SEPARATOR . 'returner.php';
我认为问题可能与文件的路径有关,因此我修改了代码以使用 DIR 和DIRECTORY_SEPARATOR来避免路径出现任何问题。我测试了路径是否正在使用file_exists并且找到了文件,但是当我尝试在Windows服务器上运行它时,我的代码仍然没有做任何事情。
/index.php包含/lib/returner.php
/lib/returner.php包含/lib/login.php
代码:
的index.php:
...
div class="container" role="main">
<?php
require_once __DIR__ . DIRECTORY_SEPARATOR . 'lib' . DIRECTORY_SEPARATOR . 'returner.php';
echo '<div class="page-header">';
echo '<h1>' . returnSede() . '</h1>';
...
returner.php:
...
<?php
require_once __DIR__ . DIRECTORY_SEPARATOR . 'login.php';
$sede = $_POST['selectSede'];
...
答案 0 :(得分:0)
您的代码似乎应该可以正常工作。
以防万一,Stack Overflow上的这个answer可能会有所启发。我会总结一下:
如果您只担心基于Unix或Windows,使用正斜杠(“C:/test.txt”)对路径进行硬编码将会起作用。
由于您使用的报价类型可能存在差异:
"\123"
会转换为"Q"
"C:\\test.txt"
或'C:\test.txt'
或"C:/test.txt"
同一问题的另一个answer建议做这样的事情:
define('DS','/');
define('BASE_ROOT',str_replace('\\',DS,dirname(__FILE__)));
require_once BASE_ROOT . DS . 'includes' . DS . 'init.php';