我遇到了PHP扩展中最奇怪的问题。当我从命令行使用它时,如下所示:PHP扩展:从命令行运行,但不在httpd(Apache)服务器中运行
php -r '$mc = new MyClass("foo"); echo $mc->getField();'
它按预期打印出“foo”。
但是,如果我尝试从我的index.php中做同样的事情,我得到一个类未找到错误。
Fatal error: Class 'MyClass' not found in /var/www/html/index.php on line 12
这怎么会发生?我甚至在运行php -r命令时将httpd设置为与我自己一样的用户运行。
我的index.php看起来像这样:
<html>
<head>
<title>PHP Test</title>
</head>
<body>
<p>
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
$mc = new MyClass("foo");
echo $mc->getField();
?>
</p>
</body>
</html>
我的httpd.conf的PHP部分看起来像这样:
# PHP Configuration for Apache
#
# Load the apache module
#
LoadModule php5_module modules/libphp5.so
#
# Cause the PHP interpreter handle files with a .php extension.
#
<Files *.php>
SetOutputFilter PHP
SetInputFilter PHP
LimitRequestBody 9524288
</Files>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
#
# Add index.php to the list of files that will be served as directory
# indexes.
#
DirectoryIndex index.php
很显然我的php.ini设置正确,因为我的php -r命令起作用。什么可能导致这个问题?