PEAR's "System.php" in Shell (via php) aufrufbar

klangfeld

New Member
Hallo,

meist melde ich mich wenn ich das Internet schon durch bin:

Ich habe einen Debian/Plesk Server laufen.


Ich habe PEAR installiert, geupdated und scheint auch für den apache zu laufen. Das soll heissen ich kann eine Datei mit dem Inhalt

PHP:
<?php
require_once 'System.php';
var_dump(class_exists('System'));
?>

im Browser öffnen und bekomme

bool(true)

zurück

Das Tutorial das ich durchmache meint ich kann das php-script auch im Terminal aufrufen

Domainpfad> php check_pear.php

und sollte die selbe Ausgabe erzeugen( "bool(true)" ). Tut es aber nicht.

Fehlermeldung:

Warning: require_once(System.php): failed to open stream: No such file or directory in /var/www/vhosts/webdesign-solution.eu/httpdocs/pfad.php on line 2

Fatal error: require_once(): Failed opening required 'System.php' (include_path='.:/usr/share/php') in /var/www/vhosts/domain.eu/httpdocs/pfad.php on line 2


Die Rechte der System.php ist auf root:root 777

Ich habe sämtliche php.ini Files auf dem Server (> locate php.ini)

  • /etc/php5/cli/php.ini
  • /etc/php5/cgi/php.ini
  • /etc/php5/apache2/php.ini

den include_path auf

include_path = ".:/usr/share/php"

geändert. Server gleich als Ganzes neugestartet.


Leider ohne Erfolg


WÄRE SUPER WENN SICH EINER MEINEM PROBLEM ANNEHMEN WÜRDE

Vielen Dank im Voraus


P.S:

pear "pear config-show" ergibt:


Auto-discover new Channels auto_discover <not set>
Default Channel default_channel pear.php.net
HTTP Proxy Server Address http_proxy <not set>
PEAR server [DEPRECATED] master_server pear.php.net
Default Channel Mirror preferred_mirror pear.php.net
Remote Configuration File remote_config <not set>
PEAR executables directory bin_dir /usr/bin
PEAR documentation directory doc_dir /usr/share/php/docs
PHP extension directory ext_dir /usr/lib/php5/20060613+lfs
PEAR directory php_dir /usr/share/php
PEAR Installer cache directory cache_dir /tmp/pear/cache
PEAR configuration file cfg_dir /usr/share/php/cfg
directory
PEAR data directory data_dir /usr/share/php/data
PEAR Installer download download_dir /tmp/pear/download
directory
PHP CLI/CGI binary php_bin /usr/bin/php
php.ini location php_ini /etc/php5/apache2/php.ini
--program-prefix passed to php_prefix <not set>
PHP's ./configure
--program-suffix passed to php_suffix <not set>
PHP's ./configure
PEAR Installer temp directory temp_dir /tmp/pear/temp
PEAR test directory test_dir /usr/share/php/tests
PEAR www files directory www_dir /usr/share/php/www
Cache TimeToLive cache_ttl 3600
Preferred Package State preferred_state stable
Unix file mask umask 22
Debug Log Level verbose 1
PEAR password (for password <not set>
maintainers)
Signature Handling Program sig_bin /usr/bin/gpg
Signature Key Directory sig_keydir /usr/etc/pearkeys
Signature Key Id sig_keyid <not set>
Package Signature Type sig_type gpg
PEAR username (for username <not set>
maintainers)
User Configuration File Filename /root/.pearrc
System Configuration File Filename /usr/etc/pear.conf
 
Du hast bereits richtig erkannt, dass PHP über die Kommandozeile (CLI=command line interface) eine andere php.ini lädt. Vergleich also einfach die beiden INI-Dateien (z.B. mit WinMerge) und du wirst das Rätsel schnell gelöst bekommen.

Ansonsten hilft es auch, jeweils bei beiden Skripten die include_path's mittels get_include_path() auszugeben.

Viele Grüße
 
Ich weiss nicht warum _JEDER_ mittels locate, find oder anderen Konstrukten seine php.ini jagt? phpinfo verraet den Pfad aller verwendeten php.ini's ganz am Anfang ohne jedgliches Suchen bereits freiwillig ;)

Uebrigens: da das Kommandozeilen-PHP (php5-cli) nichts mit dem Webserver zu tun hat ist ein Reload nicht notwendig ;)

Vergleich mal die Ausgabe von phpinfo() bezgl. include_path auf Kommandozeile und Webserver. Alternativ mal manuell den ganzen Pfad auf der CLI eingeben.
PHP:
<?php 
error_reporting(E_ALL);
require `pear config-get php_dir`."/System.php"; 
?>
 
Back
Top