Vimexx Facebook

Onderwerp:

pad naar php7 executable

Naam: Marten K

Titel: Member

Geplaatst op 03-06-2016 13:11

Ik ontwikkel een tool die met e-mailberichten is aan te sturen. Hiervoor gebruik ik een e-mail-forwarder die met een pipe een script aanroept, zoals bijvoorbeeld:

tool@domein.nl -> "|php -q /het/pad/naar/het/script.php"

De opdracht `php` verwijst (op dit moment) naar php versie 5.5.36. Als ik in plaats van `php` verwijs naar `/usr/local/bin/php`, dan wordt ook php versie 5.5.36 gebruikt.

Ik heb via DirectAdmin voor mijn account wel php versie 7 ingesteld, maar `php` verwijst kennelijk toch naar 5.5. Op zich was dat te verwachten.

In mijn tool gebruik ik features die alleen in php 7 beschikbaar zijn, dus ik wil wel graag die versie gebruiken. Ik heb daarom in een 'gewoon' script (bereikbaar via http) m.b.v. de PHP_BINARY variabele het pad naar php 7 achterhaald: /opt/alt/php70/usr/bin/lsphp

Ik ga ervan uit dat dit pad in de toekomst zou kunnen veranderen, bijvoorbeeld als v7.0 wordt vervangen door v7.1 of zo.

Mijn vraag: welk pad kan ik het beste gebruiken om mijn script uit te voeren met php versie 7? (of eventueel met de hoogst beschikbare stabiele php versie)

(mijn account is shared hosting op web0086)

Datum 03-06-2016 13:11:27

Naam: Marten K

Titel: Member

Geplaatst op 03-06-2016 14:02

En ik ondervind nog wat problemen met het huidige pad (/opt/alt/php70/usr/bin/lsphp): zowel PDO als mbstring zijn niet beschikbaar (wellicht ook nog andere libraries).

Als ik een forwarder maak naar "|/opt/alt/php70/usr/bin/lsphp -q -i", dan ontvang ik een mail retour met daarin info over de gebruikte php-installatie. Hierin staat o.m.:

PHP Version => 7.0.6

En bij "Configure Command" o.a.:

'--enable-mbstring=shared'

'--enable-mbregex'

'--enable-pdo=shared'

'--with-pdo-pgsql=shared,/usr'

'--with-pdo-sqlite=shared,/opt/alt/sqlite/usr'

Maar zowel mbstring als pdo worden verder niet genoemd, wat bij een "normale" phpinfo() wel zo is.

Heeft dit wellicht te maken met dat ik niet het goede pad naar de php7 executable gebruik?

Datum 03-06-2016 14:02:47

Naam: Mitchel M

Titel: Member

Geplaatst op 03-06-2016 21:32

Beste Marten,

Het klopt dat het pad inderdaad /opt/alt/php70/usr/bin/ is, echter kun je eens proberen om /opt/alt/php70/usr/bin/php te gebruiken? LSphp is een andere manier die enkel via httpd zou moeten werken. Het pad wat ik net aangaf, zou je script zonder probleem moeten laten werken! Indien dat niet het geval is, raad ik je aan even een ticket te openen zodat we je graag uit de brand helpen met onze systeembeheerders zodat jij spoedig gebruik kunt maken van jouw script!

Fijne avond!

Datum 03-06-2016 21:32:05

Naam: Marten K

Titel: Member

Geplaatst op 03-06-2016 21:48

Hallo Mitchel,

Bedankt voor de tip. Helaas levert dit nog niet direct verbetering. Ik zal een ticket openen. Mocht daar iets uit komen dat voor meer mensen interessant kan zijn, dan post ik dat hier nog.

Groet,

Marten

Datum 03-06-2016 21:48:31 | Gewijzigd op 2016-12-14 05:52:59

Naam: Marten K

Titel: Member

Geplaatst op 08-06-2016 09:12

Voor iedereen die deze thread vindt: het is uiteindelijk gelukt met een forwarder zoals:

tool@domein.nl -> "|/opt/alt/php70/usr/bin/php -q -c /pad/naar/een/eigen/php.ini /pad/naar/het/script.php"

De delen in deze forwarder zijn dan:

|
De pipe geeft aan dat de (ruwe) inhoud van het e-mailbericht wordt doorgegeven.

/opt/alt/php70/usr/bin/php
Dit is het volle pad naar de php executable, versie 7.0.

-q
Deze optie zorgt ervoor dat er geen http-headers worden verzonden. Als dat wel zou gebeuren, krijg je altijd een fout-mailtje terug...

-c /pad/naar/een/eigen/php.ini
De optie -c laat je verwijzen naar een php-ini bestand om te laden, zie onder.

/pad/naar/het/script.php
Het script.

De hele forwarder staat tussen dubbel-quotes, anders wordt er alleen maar een "ongeldig e-mailadres" herkend.

Het bestand php.ini bevat in mijn geval:

extension=mbstring.so
extension=pdo.so
extension=pdo_mysql.so

Dat is natuurlijk aan te vullen met andere extensions.

Datum 08-06-2016 09:12:51