0

I'm having trouble with my application locating the Zend Library. I have the ZendFramework in a separate folder (apart from public_html), so I call the Zend Classes using the autoloader, like this:

$libreria='/home/conaprel/ZendFramework/library/';
set_include_path(get_include_path().PATH_SEPARATOR.$libreria);
require_once('Zend/Loader/Autoloader.php');
Zend_Loader_Autoloader::getInstance();

and the folder structure of the site is what is shown in the first line of code. This is a file I include whenever I need the Zend Classes available. It worked fine when I ran it on a local server, but now it's giving me the error:

Warning: include_once() [function.include-once]: Unable to access Zend/Service  /Recaptcha.php in /home/conaprel/ZendFramework/library/Zend/Loader.php on line 146

Warning: include_once(Zend/Service/Recaptcha.php) [function.include-once]: failed to open stream: No such file or directory in /home/conaprel/ZendFramework/library/Zend/Loader.php on line 146

Warning: include_once() [function.include]: Failed opening 'Zend/Service/Recaptcha.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php:/home/conaprel/ZendFramework/library') in /home/conaprel/ZendFramework/library/Zend/Loader.php on line 146

¿What can I do? I've checked if the Recaptcha.php is in the Services folder and there it is.

gerardo flores
  • 402
  • 1
  • 6
  • 28
  • Looks like you looked in a different place then the places PHP looks like on `include_once`. – hakre Aug 24 '13 at 21:41
  • possible duplicate of [Reference - What does this error mean in PHP?](http://stackoverflow.com/q/12769982/367456) – hakre Aug 24 '13 at 21:41
  • Alright, guess then I should do `$libreria='__DIR__./home/conaprel/ZendFramework/library'; set_include_path(get_include_path().PATH_SEPARATOR.$libreria); require_once('Zend/Loader/Autoloader.php'); Zend_Loader_Autoloader::getInstance();` – gerardo flores Aug 24 '13 at 21:45
  • However it isn't working. Maybe it is because I'm refering to a folder and not to a file, but then what can I do? I'm trying to set a path so folders should be included, don't they – gerardo flores Aug 24 '13 at 21:49
  • well, not *`__DIR__`* inside the string, but before: `__DIR__ . '/...'`. Also the Zend manual tells you how to setup the autoloader. It's acutally quite well explained IIRC. – hakre Aug 24 '13 at 21:50
  • I tried using `$_SERVER['DOCUMENT_ROOT']` but then it gives me the following error ` Failed opening required 'Zend/Loader/Autoloader.php' (include_path='.:/usr/lib/php:/usr/local/lib/php:/home/conaprel/public_html/ZendFramework/library}'` and this gives me an incorrect path in the last line, because I wante /home/conaprel/ZendFramework/library' ¿Should I put the entire Framework in the public_html folder? I don't think thats advisable, yes? – gerardo flores Aug 24 '13 at 21:54
  • I think the problem is in the line that states `set_include_path(get_include_path().PATH_SEPARATOR.$libreria);` because it doesn't seem to be setting that path. But the path has been set, because it reads `Failed opening 'Zend/Service/Recaptcha.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php:/home/conaprel/ZendFramework/library') ` But I can't make up any other reason as the Zend documentation states "By default, this will allow loading any classes with the class namespace prefixes of "Zend_" or "ZendX_", as long as they are on your include_path." about the Autoloader – gerardo flores Aug 24 '13 at 22:07
  • I believe I should contact the system administrators of my hosting company cause it seems the include_path cannot be simply set the way I'm doing it. – gerardo flores Aug 24 '13 at 22:24
  • By the way, I tried to set the include path in a htaccess using `php_value include_path ".:/usr/lib/php:/usr/local/lib/php:/home/conaprel/ZendFramework/library"`but it resulted in a 500 internal server error – gerardo flores Aug 24 '13 at 22:59
  • possible duplicate of [Reference - What does this symbol mean in PHP?](http://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php) – CodingIntrigue Aug 25 '13 at 09:24

1 Answers1

1

This looks like a case sensitivity problem. The correct filename is Zend/Service/ReCaptcha.php (note the capital 'C'), but the error you're getting indicates it's trying to include Zend/Service/Recaptcha.php (lower case 'C'). I'm guessing you're using a case insensitive file system locally and case sensitive in production.

Just correct the case of the class you're trying to instantiate and it should work:

$captacha = new Zend_Service_ReCaptcha();
Tim Fountain
  • 33,093
  • 5
  • 41
  • 69
  • Many thanks. I'd been crazy about this cause I'd been all morning uploading a very large site, and I was wondering what I had missed reading the Autoloader usage in Zend site, finding most of what is explained there is about using namespaces for classes and registering custom resources, which was useless until you pointed out this (¿silly?) mistake – gerardo flores Aug 24 '13 at 23:06