2012-01-20 14 views
1

シェルで私は簡単なwhoamiをし、私は良いです、それは私の人だからgeoffを得る。シェルwhoamiと等しくないphp shell_exec whoami?

私はshell_exec( 'whoami')を持っています。私は誰もいません。

これは私の元の問題を説明することができる違いがあるようです:imagemagickはシェルからは動作しますが、PHPスクリプト内では動作しません。

このサイトでは、私のapache xamppが通常のユーザー名を使用するのではなく、別のユーザー名を割り当てていると思います。

私はsudoの方法でPHP内のログインを変更しようとしましたが、これはまだ私のために働いていません。

誰でも手助けできますか?

+0

正常に機能しないコードと実際に結果を投稿できますか?シェルからシェルを呼び出すときにimagemagickへのパスを指定し、出力しようとしているディレクトリがユーザnobodyによって書き込まれることを確認する必要があります。 – drew010

+1

ユーザ 'nobody'はおそらく' $ PATH'や不完全な '$ PATH'を持っていません。 ImageMagickバイナリへのフルパスをPHPから呼び出すときに指定します。 –

+0

'shell_exec(/ usr/local/bin/convert -verbose /Users/geoff/Sites/Test/test.pdf /Users/geoff/Sites/Test/result.png 2>&1 1/dev/null ') ; 'あなたは出力ディレクトリを言いますが、これを選択できますか?明らかにするために、私はすでに完全なパスを含んでいましたが、うまくいきませんでした。 – Geoff

答えて

1

@anubhavaあなたはwhoamiを実行するとき、2つの異なる答えを得る理由について正しいです。しかし、あなたがPDFに変換しようとしている場合ImageMagickを使ったPNG(質問に対するあなたのコメントのような)、さらにはusin gスクリプトのPATHにもGhostscriptのパスの場所が含まれていない場合、ImageMagickのconvertへのフルパスは機能しません。ユーザーパスを邪魔することなく、次のように追加することができます。

putenv("PATH=/usr/local/bin:/usr/bin:/bin"); 

または設定に応じて同様のものを追加できます。 gs実行ファイルはスクリプトユーザのパスのどこかにある必要があります。そうしないと、ImageMagickはPDFまたはEPSファイルの変換に失敗します。

+0

私はあなたのコメントを読むとすぐ、私はあなたが頭の爪に当たったと感じていました:そして、実際に今は動作します。天才!あなたと助けてくれたすべての人に感謝します。 – Geoff

+0

@Geoff:喜んで助けてください。私は1年前にその正確な問題に取り組んだ。 ;) – Crontab

2

理解しやすいはずです。

  • シェルでは、UNIXユーザーgeoffとしてログインしています。
  • PHPはUnixのhttpdプロセスで実行されます。これは所有者がnobodyであるため、shell_exec('whoami'); PHPから取得したものです。
0

whoamiからの結果は、あなたのApacheがnobodyとして実行されていることを意味します。これはそうすべきであり、これを変更しないことを強くお勧めします。

imagemagickが動作しない理由はおそらく、あなたのPHPコードが実行されている権限に直接関係しているとは限りません。問題を正確に診断するのに十分な情報はありませんが、実行可能ファイルまたはライブラリ検索の失敗が考えられます。バイナリとライブラリがnobodyで読み取り可能であり、それらがapacheがそれらを見つける場所にあることを確認してください。特に、$PATH$LD_LIBRARY_PATHが正しく設定されていることを確認してください。

+0

これは有望です。私が上記のコードから得たエラーメッセージは 'UnableToOpenConfigureFile'と' PostscriptDelegateFailed'と 'MissingAnImageFilename'でした。ライブラリはどこですか? – Geoff

+0

'/ lib'、'/usr/lib'などのような場所です。詳細は 'ld'マンページ(正確には' -rpath-link'オプションの説明)を参照してください。実際にはライブラリの問題ではないようです。 configファイルを見つけることができないので、どこを探しているかを確認し、見つかったことを確認する必要があります(configを期待どおりに置くか、適切なコマンドラインオプションを使用して、 configはです)。設定を探している場所を調べるには、 'strace'を試してみてください。 –

0
  1. 誰が何の$ PAHTを持っていないので、imagemagicバイナリが格納されている場所、それは単に知らない(もしくはshell_execへのフルパスを指定します。
  2. にしてみてください
  3. あなたのコマンドに「1 2> &」を追加それは間違って起こっている見るために、コンソール上のユーザーとしてスクリプトを実行します。
関連する問題