这是我们的 Centos 版本号
[marc disk5]$ cat /etc/redhat-release
CentOS release 5.7 (Final)
下面是我们如何启动我们的 apache web 服务器
[marc php]$ sudo gdb /usr/sbin/httpd
[sudo] password for marc:
GNU gdb (GDB) Red Hat Enterprise Linux (7.0.1-37.el5_7.1)
Copyright (C) 2009 Free Software Foundation, Inc.
Reading symbols from /usr/sbin/httpd...(no debugging symbols found)...done.
(gdb) run -X
下面是我们如何启动我们的 Firefox 网络浏览器
[marc]$ sudo firefox
[sudo] password for marc:
这是我们在 Firefox 网络浏览器中输入的 URL
http MatchUpObjectPHPSample.php
当我们在 Web 浏览器呈现的网页上激活提交请求时,我们会收到以下诊断消息:
Path /home/marc/data/mdMatchup.dat
throw exception /home/marc/data/mdMatchup.dat retval -1 errno 13
Errno 13 IS EACCESS 由我们用来测试文件存在的 C/C++ access("/home/marc/data/mdMatchup.dat",F_OK) API 调用返回。访问的手册页指出:
EACCES 对文件的请求访问将被拒绝,或者对路径名的路径前缀中的目录之一的搜索权限被拒绝。
这是我们的路径权限:
[marc /]$ ls -l
drwxr-xr-x 7 root root 4096 Jan 3 11:45 home
[marc home]$ ls -l
drwx------ 38 marc users 4096 May 29 16:36 marc
[marc home]$ cd marc
[marc ~]$ ls -l
drwxrwxrwx 2 root root 4096 May 29 19:20 data
[marc ~]$ cd data
[marc data]$ pwd
/home/marc/data
[marc data] ls -l
-rwxrwxrwx 1 root root 244736 May 28 15:49 mdMatchup.dat
最后,这是一段非常短的 C++ 代码:
cSQLite::cSQLite(char *File_,bool bMustExist_) {
int retval(0);
if (bMustExist_) {
retval = access(File_,F_OK);
if (retval != 0) {
printf("throw exception %s retval %d errno %d\n",File_,retval,errno);
throw cException(ERR_DBDATABASE,"cSQLite",File_);
}
if (sqlite3_open(File_,&Database)!=SQLITE_OK) {
RecordError();
throw cException(ERR_DBDATABASE,"cSQLite",LastError);
}
}
Statement=0;
Columns=0;
}
有人可以告诉我们我们正在犯什么错误,或者这是 CentOS 版本特定的问题吗?