我有一个网站,在 WAMP 中运行没有问题。最近我搬到了 Ubuntu,所以我安装了 LAMP,一切看起来都很好:localhost
浏览器中显示 Apache2 Ubuntu 默认页面。
创建了一个 info.php 文件,内容如下:
<?php
phpinfo();
?>
使用浏览器访问该文件即可http://localhost/info.php
,并显示 php 信息。
但尝试使用 访问我的网站时,http://localhost/index.php
网站无法加载。我已将所有必需的文件放在var/www/html
文件夹中(info.php 文件也位于其中并且可以正常工作)。
我还需要做什么才能加载我的网站吗?
附加信息:该文件/etc/apache2/mods-enabled/dir.conf
包含以下内容:
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
编辑1:
ls -la /var/www/html/in*
将列出我拥有的 3 个文件:
-rw-r--r-- 1 root root 10918 Jul 21 19:18 /var/www/html/index.html
-rwxrwxrwx 1 mihail-cosmin mihail-cosmin 3931 Apr 26 2017 /var/www/html/index.php
-rw-r--r-- 1 root root 20 Jul 21 20:55 /var/www/html/info.php
index.html
并且info.php
工作,它们属于用户和组 root。
index.php
这不起作用,属于我的用户和组
我已经在 etc/apache2/envvars 中设置了用户和组,但仍然不起作用:
export APACHE_RUN_USER=mihail-cosmin
export APACHE_RUN_GROUP=mihail-cosmin
编辑2:
我意识到我在 Windows 上使用的是旧版本的 PHP,更确切地说是:PHP 5.6。我回到 Windows 并将 WAMP 中的版本更改为较新的版本,显然我的网站也停止运行了。
在 Ubuntu 上,我安装了旧版本 5.6,并将其更改为 Apache:
sudo a2enmod php5.6
Considering dependency mpm_prefork for php5.6:
Considering conflict mpm_event for mpm_prefork:
Considering conflict mpm_worker for mpm_prefork:
Module mpm_prefork already enabled
Considering conflict php5 for php5.6:
Enabling module php5.6.
To activate the new configuration, you need to run:
systemctl restart apache2
但我的网站仍然无法运行。
答案1
我找到了解决方案。我将添加我采取的所有步骤,以防万一它能帮助其他人从 Windows 迁移到 Ubuntu。
1.我的网站没有理由不能正常工作。所以问题肯定出在 index.php 中的代码上。所以你应该做的第一件事就是激活 php 错误。所以我在 index.php 中添加了以下内容:
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
2.我遇到的第一个错误是关于其他 php 文件的路径。可能是由于 Windows 和 Ubuntu 之间的差异造成的。
Warning: require_once(/main/dbconnect.php): failed to open stream: No such file or directory in /var/www/html/index.php on line 7
Fatal error: require_once(): Failed opening required '/main/dbconnect.php' (include_path='.:/usr/share/php') in /var/www/html/index.php on line 7
解决方案是在路径前面添加一个点。/main/dbconnect.php
3.此后,我收到一个有关 SQL 数据库连接的新错误:
Warning: mysqli_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: YES) in /var/www/html/main/dbconnect.php on line 4
ERROR: Could not connect. Access denied for user 'root'@'localhost' (using password: YES)
这次的问题是密码包含特殊字符。解决方法是将密码更改为简单的密码,例如 12345。
此后我的网站开始正常运行。
总之,总体解决方案是使我的文件中的代码适应 Ubuntu 系统。